我希望用户能够从下拉列表中选择餐厅。我通过简单的
来实现这一点:echo $this->Form->input(
'Restaurant', array('multiple'=>false, array('empty' => true)));
我遇到的问题是:一些餐厅有重复的名字,我需要一种方法让用户知道哪个是哪个。我想有ID和/或地址内的选择选项,如:
<li value='62'>McDonalds (1234 Happy St) - #62</li>
<li value='63'>McDonalds (9876 French Fry Ln) - #63</li>
...etc
有办法做到这一点吗?我显然有能力用普通的HTML来做,但是……我希望我能留在CakePHP。
提前感谢任何想法/建议/方向!
当你加载你的餐厅时你实际上得到一个像这样的数组
array (
ID => NAME,
ID => NAME
)
基本上,它是一个关联数组,ID作为键,显示字段作为值。因此,只要通过find
操作或普通PHP数组迭代修改该数组,就可以实现目标。
编辑
你的答案是CakePHP VirtualFields
在你的模型中你定义它为
var $virtualFields = array(
'rest_unique_name' => 'CONCAT(Restaurant.first_name, " ", Restaurant.address)'
);
在你的控制器中你这样做
$opts = array(
'fields' => array('id', 'rest_unique_name')
);
$restaurants = $this->Restaurant->find('list', $opts);