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/

Другие вопросы по тегам