CakePHP - заполнение формы выбора - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь заполнить выпадающую форму выбора значениями из базы данных.

Вот то, что у меня есть в данный момент.

$modes = Set::combine($this->Setting->find('all', array('conditions' => array('setting_name LIKE' => 'mode_%'))), '{n}.Setting.id','{n}.Setting.setting_name');
$this->set('modes', $modes);

Тогда, на мой взгляд, это то, что у меня есть

echo $form->select('current_mode',$modes);

Это вывод

<select name="data[Setting][current_mode]" id="SettingCategoryId">
<option value=""></option>
<option value="2">mode_2</option>
<option value="1">mode_1</option>
<option value="3">mode_3</option>
</select>

Вывод, который у меня есть сейчас, почти работает, но как мне сделать так, чтобы вывод был таким?

<select name="data[Setting][current_mode]" id="SettingCategoryId">
<option value="mode_2">Title 2</option>
<option value="mode_1">Title 1</option>
<option value="mode_3">Title 3</option>
</select>

Примечание:
1. нет опции по умолчанию с пустым значением
2.Значение параметра не является идентификатором, а заголовки взяты из поля «title» в таблице

Спасибо,
Tee

Ответы [ 2 ]

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

См. http://book.cakephp.org/view/1022/find-list и http://book.cakephp.org/view/1062/displayField.

$settings = $this->Setting->find('list', array(
    'conditions' => array('Setting.setting_name LIKE' => 'mode_%'),
    'fields'     => array('Setting.id', 'Setting.title')
));
$this->set(compact('settings'));

// view
echo $this->Form->input('current_mode', array(
    'type'    => 'select',
    'options' => $settings,
    'empty'   => false
));
1 голос
/ 14 апреля 2011

Вы хотите пройтись по режимам и создать опцию для каждого режима, например так:

$options = array();

foreach($modes as $mode)
{
    $options[$mode] = "Title " . $mode;
}

echo $form->select('current_mode', $options);

Вы можете либо разместить вышеупомянутую логику в своем представлении, или вы можете сделать это в вашем контроллере, а затем установить переменную следующим образом:

$this->set("options", $options);

Документы здесь довольно хорошо объясняют метод выбора элемента:

http://book.cakephp.org/view/1430/select

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