在CakePHP中定义组合框中的默认值

时间:2010-12-29 17:27:20

标签: cakephp

    <?php
        echo $form->create('admin_merchant_form', array('action' => '#'));
        echo $form->input('company_name', array('label' => 'Company Name'));
        echo $form->input('ac_owner',
                           array('label' => 'Account Owner',
                           'options' => array('a','b','b'),
                           'default' => $merchant_select));
        echo $form->end('Update');
    ?>

这是CakePHP代码,用于生成包含一个组合框的表单,其中包含值“a,b,c”并将默认值指定为$merchant_select,这是数值数据。现在的问题是,当我指定'default'=&gt; 1时,它在组合框中返回'b'作为默认值,但在写'default'=&gt;时$ merchant_select组合框只显示第一个值'a'。

$merchant_select变量被赋予一个等于商家id的数值,当我选择网格中的任何行时,该值为1,2或3。我还有JavaScript代码,当我选择网格中的任何行时,它会使用商家值进行提醒,因此数字数据肯定会分配给$merchant_select变量。

3 个答案:

答案 0 :(得分:1)

通过将所需值的索引作为“default”参数传递来设置默认值。在您的代码中,您没有使用显式命名的关联数组。你想要的是:

'options' => array('a'=>'A', 'b'=>'B', 'c'=>'C'), 'default'=>'a'

你也可以使用数字键,你只需要'默认'为0,1,2等。

答案 1 :(得分:0)

我不确定这是否是自动控制的,但$merchant_id变量可能位于字符串上下文中,而不是数字上下文中。尝试将其转换为数字以查看是否会发生任何变化。

答案 2 :(得分:0)

'default'是一个从零开始的值,在您的情况下,您必须分配($ merchant_select - 1),或者更好:使用商家的键值制作选项数组:

<?php

  echo $form->input('ac_owner',
    array('label' => 'Account Owner',
      'options' => array(1 => 'a', 2 => 'b', 3 => 'c'),
      'default' => $merchant_select));
?>