FormHelper - Предварительно заполненный выпадающий список - CakePHP

Если бы у меня был:

// Controller
$this->Model->id = $id;
$this->request->data['Model'] = $this->Model->read();

А потом:

// View (input field)
$this->Form->input('some_field'); // THE FORM FIELD WILL BE PRE-POPULATED

Но если я хочу, чтобы вместо этого было поле выбора:

// View (with select)
$this->Form->select('some_field', $options); // THE SELECT BOX ISN'T PRE-POPULATED

Вопросы тогда:

а. Почему поле выбора не заполнено заранее, как поле ввода?

б. Мне действительно нужно вручную предварительно заполнить вот так?

// View (with select)
$this->Form->select('some_field', $options, array('value' => $this->request->data['Model']['some_field'])); // THE SELECT BOX IS PRE-POPULATED

в. Является ли приведенный выше метод наиболее эффективным методом предварительного заполнения полей выбора, которые уже имеют значение?


person Community    schedule 28.09.2012    source источник


Ответы (1)


нет, some_field будет предварительно заполнен вашими переданными данными формы, если вы сделаете это правильно. вы отлаживали то, что вы там произвели? многоуровневый массив, который не является стандартным тортом.

правильный подход будет:

$this->request->data = $this->Model->read();

поскольку массив уже содержит ключ Model (который должен был отображаться в режиме debug()!). но осторожно делать это, только если не опубликовано!

на ваш последний вопрос нет, по возможности используйте контроллер или хотя бы default. value приведет к тому, что ваша форма потеряет ранее выбранное значение, если проверка не пройдена.

мой старый пост о торте 1.3 также может пролить свет на это: http://www.dereuromark.de/2010/06/23/working-with-forms/

person mark    schedule 28.09.2012