CakePHP -可能有一个选择框与多个字段显示在选项中


CakePHP - Possible to have a select box with multiple fields displayed in the options?

我希望用户能够从下拉列表中选择餐厅。我通过简单的

来实现这一点:
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);