CakePHP - 填充选择表单

tee*_*ink 0 cakephp

我正在尝试使用数据库中的值填充下拉选择表单.

这是我目前的情况.

$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);
Run Code Online (Sandbox Code Playgroud)

然后在视图中,这就是我所拥有的

echo $form->select('current_mode',$modes);
Run Code Online (Sandbox Code Playgroud)

那个输出

<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>
Run Code Online (Sandbox Code Playgroud)

我现在的输出几乎可以工作,但我怎样才能使输出像这样?

<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>
Run Code Online (Sandbox Code Playgroud)

注意:
1.没有带空值
2的默认选项.选项的值不是id,而title来自表中的"title"字段

谢谢,
Tee

dec*_*eze 14

请参阅http://book.cakephp.org/view/1022/find-listhttp://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
));
Run Code Online (Sandbox Code Playgroud)