Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在更新功能中获取Yii dropDownList的选定值?_Php_Yii - Fatal编程技术网

Php 如何在更新功能中获取Yii dropDownList的选定值?

Php 如何在更新功能中获取Yii dropDownList的选定值?,php,yii,Php,Yii,我在更新模型值时遇到问题,其中一个模型属性是从下拉列表中选择的数字,以下是我的代码: <?php $images = Homepage::model()->findAll(); if(!empty($images)){ $data = array(); $x = 1; f

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

<?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包含数据库中模型(表)的记录数,问题在于更新功能,例如:在创建(图像1)时,我选择1作为顺序值,然后当我转到更新时,我得到的预选选项是2(这是listData的最后一个值),而不是1,那么这里的错误是什么呢?

您需要在选项中定义所选的

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

试试看,这会有帮助。

我不是Yii专家,但我认为你做得不对,我使用下面的代码,效果很好,我从数据库中获取id并将其显示在下拉列表中,试试看可能有帮助或检查


我认为它可能与$data变量有关

根据我使用Yii的经验,我总是使用关联数组($key=>$value)作为下拉列表

所以可能是

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

这样,Test和Test 2将是下拉列表本身显示的值,“1”和“2”将是存储在$model和数据库中的值。

而不是$model->id pass$x,您需要在此处传递所选值,而不是$x I passed$model->order请参见此处:
$data = array('1'=>'Test', '2'=>'Test 2');