【问题标题】:How to populate form helper select with array?如何用数组填充表单助手选择?
【发布时间】:2013-04-16 18:55:53
【问题描述】:

我有以下数组数据是从不属于我的表中获取的。

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

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

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

我如何做到这一点?

【问题讨论】:

    标签: php forms cakephp view controller


    【解决方案1】:

    通常,如果您的 displayFieldprimaryKey 在模型定义中设置正确,$this-&gt;YourModel-&gt;find('list') 将返回适当的数组。

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

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

    但请查看find('list'),因为在 95% 的情况下,它可以解决此类“问题”。 只是重新阅读它不是你的桌子,所以我猜你根本没有找到。但是,解决方案仍然是,在您从另一个表中获取的数组中执行一个 for 并像我之前指出的那样对其进行调整,ids 作为键,名称作为值

    【讨论】:

    • 非常感谢。你是这些最后期限中的一束光。我确实使用了primaryKeydisplayField 方法。这不是我的桌子,但我为它做了一个模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多