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
с. Является ли вышеуказанный метод наиболее эффективным методом предварительного заполнения полей выбора, который уже имеет значение?
1 ответ
Нет, поле some_field будет предварительно заполнено переданными вами данными формы, если вы сделаете это правильно. ты отлаживал то, что там делал? многоуровневый массив, который не является стандартным.
правильный подход будет:
$this->request->data = $this->Model->read();
так как массив уже содержит ключ модели (который debug() показал бы!). но делать это осторожно, только если не опубликовано!
на ваш последний вопрос, нет, если возможно, используйте контроллер или, по крайней мере, default
, value
приведет к тому, что ваша форма потеряет ранее выбранное значение, если проверка не удалась.
Моя старая публикация о торте 1.3 также может пролить свет на это: http://www.dereuromark.de/2010/06/23/working-with-forms/