CakePHP - 可以在选项中显示包含多个字段的选择框吗?

时间:2011-04-26 04:23:35

标签: php forms cakephp cakephp-1.3

我希望用户能够从下拉列表中选择一家餐馆。我通过简单的方式实现了这一目标:

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。

提前感谢任何想法/建议/方向!

1 个答案:

答案 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);