Codeigniter: отправленная форма не показывает значения - PullRequest
0 голосов
/ 14 апреля 2011

Пожалуйста, посетите следующую ссылку: Демонстрационная ссылка для проблемы

Вы можете видеть, что форма не показывает отправленные значения и не загружает файл.

Ниже приведен код формы:

<form id="frm" name="frm"  method="post" enctype="multipart/form-data">
            <fieldset class="fieldset2">

                <legend class="legend2">Add Bid Type</legend>

                <div class="form_fields">

                <p>
                <label for="subject" class="label2">Bid Type:</label>
                <input type="input" id="type" name="type" class="textfield2" />
                </p>

                <p>
                <label for="subject" class="label2">Bid Type Code:</label>
                <input type="input" id="code" name="code" class="textfield2" />
                </p>


                <p>
                <label for="description" class="label2">Bid Type Description:</label>
                <textarea id="description" name="description" class="textarea2"></textarea>
                </p>




                <p>
                <label for="userfile" class="label2">Icon:</label>
                <input type="file" id="userfile" name="userfile" class="input_file"  />
                </p>


                </div>

            </fieldset>

            <fieldset class="none">
            <p>
                <input type="submit" id="btnsubmit" name="btnsubmit" class="btn" value="Add" />
    <input type="reset" id="btnreset" name="btnreset" class="btn" value="Reset" />
            </p>
            </fieldset>
        </form>`

И следующий код контроллера:

<code>function create() {

        $data = '';


        echo '<pre>';
        echo 'below is Post Fields Data:<br>';  
        print_r($this->input->post());
        echo '<br>Post Fields Data Ends: ';     

    echo '
'; $ this-> form_validation-> set_rules ('type', 'Bid Type', 'trim | required | xss_clean'); $ this-> form_validation-> set_rules ('code', 'Code Bid Type', 'trim | xss_clean'); $ this-> form_validation-> set_rules ('description', 'Описание типа ставки', 'trim | xss_clean'); $ data ['errors'] = array (); if ($ this-> form_validation-> run ()) { $ data = array ( 'code' => $ this-> form_validation-> set_value ('code'), 'type' => $ this-> form_validation-> set_value ('type'), 'description' => $ this-> form_validation-> set_value ('description'), ); if (! is_null ($ this-> bid_types-> create_bid_type ($ data))) { $ data ['errors'] ['success'] = 'Запись успешно добавлена!'; } еще { $ errors = $ this-> bid_types-> get_error_message (); foreach ($ errors as $ k => $ v) $ data ['errors'] [$ k] = $ this-> lang-> line ($ v); } $ config ['upload_path'] = base_url (). 'resource / images / uploads /'; $ config ['allow_types'] = 'gif | jpg | png'; // $ config ['max_size'] = '100'; // $ config ['max_width'] = '1024'; // $ config ['max_height'] = '768'; $ this-> load-> library ('upload', $ config); if (! $ this-> upload-> do_upload ()) { $ data ['errors'] ['upload'] = 'Not Uploaded'; // $ data ['errors'] ['upload'] = $ this-> upload-> display_errors (); // $ error = array ('error' => $ this-> upload-> display_errors ()); // $ this-> load-> view ('upload_form', $ error); } еще { $ data ['errors'] ['upload'] = 'Yes Uploaded'; // $ data ['errors'] ['upload'] = $ this-> upload-> data (); // $ data = array ('upload_data' => $ this-> upload-> data ()); // $ this-> load-> view ('upload_success', $ data); } echo '
';           
        print_r($this->upload->data());

    echo '
'; } / * КОНЕЦ ФОРМЫ VALIDATRION RUN * / if (! $ this-> input-> is_ajax_request () &&! $ this-> input-> get_post ('is_ajax')) { $ this-> load-> view ('bend / bid_type / create', $ data); } } / * КОНЕЦ ФУНКЦИИ СОЗДАТЬ * /

Может ли кто-нибудь подсказать мне, что и где я делаю неправильно, и как это можно подвергнуть повторной проверке?

Ответы [ 5 ]

1 голос
/ 14 апреля 2011

Данные файла отображаются в $ _FILE, а не в $ _POST.

Я думаю, что эта строка является вашей проблемой:

$config['upload_path'] = base_url().'resource/images/uploads/';

Эта $config['upload_path'] должна указывать на файловую системупуть , а не URL.Попробуйте что-то более похожее на:

$config['upload_path'] = realpath(APPPATH . '../resource/images/uploads/');

, который начнется с вашей папки application, вверх на одну папку, затем в resource/images/uploads, соответственно измените ее, если она где-то еще.

ps Также проверьте свои права на запись.

0 голосов
/ 14 марта 2012

нельзя использовать

$this->form_validation->set_rules('code', 'Bid Type Code', 'trim|xss_clean');

в multipart, поэтому вы должны создать свою собственную функцию для проверки и использовать callbacks

0 голосов
/ 14 апреля 2011

Я бы добавил атрибут action к форме, используя echo form_open('/phpdemo/b1/admin/bid_type/create'), как описано в руководстве пользователя .

0 голосов
/ 14 апреля 2011

Charles показывает, что запрос из формы отправки содержит почтовые данные.

Charles Output

Происходит ли что-нибудь еще перед функцией create (), которая может стереть данные POST?

0 голосов
/ 14 апреля 2011

поставьте $this->output->enable_profiler(TRUE) в первой строке функции create(), она покажет вам очень полезную информацию $_POST global для отладки вашего кода, например

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...