我希望用户能够从下拉列表中选择一家餐馆。我通过简单的方式实现了这一目标:
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。
提前感谢任何想法/建议/方向!
答案 0 :(得分:1)
当您加载餐馆时,您实际上正在获得这样的数组
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);