我在更新模型值时遇到问题,其中一个模型属性是从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,那么这里的错误是什么?
答案 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和数据库中的值。