如何在更新函数中获取Yii dropDownList的选定值?

时间:2014-09-09 10:22:54

标签: php yii

我在更新模型值时遇到问题,其中一个模型属性是从dropDownList中选择的数字,这是我的代码:

<?php $images = Homepage::model()->findAll();
                        if(!empty($images)){
                            $data = array();
                            $x = 1;
                            foreach ($images as $i){

                                array_push($data, $x);
                                $x++;
                            }
                ?>
                <?php echo $form->labelEx($model,'order'); ?>
                <?php echo $form->dropDownList($model, 'order', $data, array(
                    'empty'=>'Select image order',
                    'id'=>'order')); ?>

这个dropDownList包含db中模型(表)的记录数,问题在于更新函数,例如:在创建(图像1)时我选择1作为订单值,然后当我转到更新,我得到预先选择的选项是2(这是listData的最后一个值)而不是1,那么这里的错误是什么?

3 个答案:

答案 0 :(得分:1)

我不是Yii专家,但我认为你做错了,我使用下面的代码,它工作正常我从数据库中获取id并在dropDown列表中显示它,尝试它可能有帮助或检查{{ 3}},

    <?php echo $form->labelEx($model,'order_id'); ?>
    <?php echo $form->dropDownList($model,'order_id',
     CHtml::listData(Homepage::model()->findAll(),'order_id','order_id'),
     array('empty'=>'--Select order --') ); ?>

答案 1 :(得分:0)

您需要在选项

中定义所选内容
'options'=>array($model->id => array('selected'=>true))

你的代码现在看起来很像

echo $form->dropDownList($model, 'order', $data, array(
    'empty'=>'Select image order',
    'id'=>'order',
    'options'=>array($model->id =>array('selected'=>true))             
));

试一试这会有所帮助。

答案 2 :(得分:0)

我认为可能是$ data变量。

根据我使用Yii的经验,我总是使用关联数组($ key =&gt; $ value)进行下拉列表

所以也许像是

$data = array('1'=>'Test', '2'=>'Test 2');

通过这种方式,测试和测试2将显示在下拉列表中,“1”和“2”将是存储在$ model和数据库中的值。