如何用数组填充表单助手选择?

时间:2013-04-16 18:55:54

标签: php forms cakephp view controller

我从以下的表中获取以下数组数据。

Array
(
    [0] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => EO
                    [sbu_name] => Executive Officer
                )

        )

    [1] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => FIN
                    [sbu_name] => Finance
                )

        )

    [2] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => G01
                    [sbu_name] => TEST GROUP
                )

        )

    [3] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => MAF
                    [sbu_name] => Medical Affairs
                )

        )

    [4] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => PCS
                    [sbu_name] => Patient Care Services
                )

        )

    [5] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => SSS
                    [sbu_name] => Strategic Support Services
                )

        )

)

基本上,表sys_sbu有2列。 sbu_idsbu_name。在我的视图中使用以下代码似乎不会产生预期的结果。

echo $this->Form->input('Groups', array(
    'type'=>'select',
    'options' => $groups)
);

enter image description here

我想要发生的是每个select选项的值将是sbu_id,而显示给选区的值是sbu_name。像这样:

<select>
  <option value="EO">Executive Officer</option>
  <option value="FIN">Finance</option>
  <option value="etc">etc</option>
</select>

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

通常情况下,如果在模型定义中正确设置了$this->YourModel->find('list')displayFieldprimaryKey将返回相应的数组。

如果由于某种原因他们不是,你必须手动调整你的选择数组看起来像这样

array(
    [id1] => name1,
    [id2] => name2,
    etc
)

但请注意find('list'),因为在95%的情况下,它解决了这种“问题”。 只是重新阅读它不是你的桌子,所以我猜你根本就没找到它。但是,解决方案仍然是在你从另一个表中获取的数组中进行调整,并像我之前指出的那样进行调整,将id作为键,名称作为值