微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CakePHP-填充选择形式

如何解决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);
然后在视图中,这就是我所拥有的
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. Option的值不是ID,标题来自表中的“标题”字段 谢谢, 三通     

解决方法

参见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
));
    ,您要遍历模式并为每种模式创建一个选项,如下所示:
$options = array();

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

echo $form->select(\'current_mode\',$options);
您可以在视图中放入上述逻辑,也可以在控制器中进行操作,然后按如下所示设置变量:
$this->set(\"options\",$options);
此处的文档很好地解释了select元素方法: http://book.cakephp.org/view/1430/select     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。