2013-08-07 3 views
0

У меня есть контроллер с функцией add() и create(). Добавлять сообщения функции для создания.CodeIgniter Информация о форме

Форма отображается с помощью формы helper. В функции Add(), у меня есть массив, чтобы установить формы ввода атрибутов, выглядит следующим образом:

$this->data['form'] = array(
     'label_attributes' => array(
      'class' => 'col-lg-2 control-label' 
     ), 
     'media_name' => array(
      'class' => 'form-control', 
      'id' => 'media_name', 
      'name' => 'media_name', 
      'value' => set_value('media_name') 
     ), 
     'media_link' => array(
      'class' => 'form-control', 
      'id' => 'media_link', 
      'name' => 'media_link', 
      'value' => set_value('media_link') 
     ), 
     'media_width' => array(
      'class' => 'form-control', 
      'id' => 'media_width', 
      'name' => 'media_width', 
      'size' => '4', 
      'maxlength' => '4', 
      'value' => ($this->form_validation->set_value('media_width')) ? $this->form_validation->set_value('media_width') : '640' 
     ), 
     'media_height' => array(
      'class' => 'form-control', 
      'id' => 'media_height', 
      'name' => 'media_height', 
      'value' => ($this->form_validation->set_value('media_height')) ? $this->form_validation->set_value('media_height') : '360' 
     ), 
     'media_description' => array(
      'class' => 'form-control', 
      'id' => 'media_desription', 
      'name' => 'media_desription', 
      'value' => $this->form_validation->set_value('media_desription') 
     ) 
    ); 

Когда я отправляю к функции создания(), я потеряю доступ к данным [ «формы» ] значения. Должна ли вся эта информация быть в представлении или можно поместить ее в модель, чтобы я мог ее загружать при необходимости? Когда я попытался поместить его в модель, у меня возникли проблемы с атрибутами «value», даже если я загрузил библиотеку form_validation в модель.

+0

Если проверка не удалась, я запустил $ this-> add() из моего контроллера, чтобы вернуться к функции add(). Это работает и показывает ошибки, однако URI остается/создается, и я хотел бы, чтобы он возвращался в/add./create должен быть только для POST. – Sean

ответ

0

Поскольку класс контроллера обновляется при поступлении нового запроса, поэтому проблема с вашим кодом заключается в том, что при посещении функции добавления создается $ this-> data, а когда вы отправляете сообщение для создания функции, класс контроллера снова возобновляется, в настоящее время нет данных this-> данных.

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

Надежда помогает!

+0

Я понимаю, что он обновляется, так что он уходит. Я не совсем понимаю, что вы подразумеваете, передавая его взгляду или модели. Моя проблема, кажется, в основном, если форма не проверяется, как я могу вернуться к функции add() и URI? Моя функция create() никогда не должна отображать представление или отображаться в адресной строке браузера. – Sean

+0

Возможно, вы можете хранить данные в сеансе – BitHigher

+0

Вы можете расширить 'CI_Controller' до' MY_Controller' и поместить там свой код. Таким образом, у вас есть '$ this-> data' на любом контроллере, который расширяет' MY_Controller'. Взгляните на [это] (http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY). – machineaddict

Смежные вопросы