0

我有控制器 EcommerceController.php,它看起来像这样:

public function actionLegalisation()
    {
        $model = new Product();

$this->render('legalisation', array('model'=>$model, 'documents'=>$documents, 'countriesIssued'=>$countriesIssued, 'countries'=>$countries, 'flag'=>$flag));
    }

在合法化视图中,我有:

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'legalisationForm',
    'action' => $this->createUrl($this->id."/".$this->action->id),
    'enableAjaxValidation'=>true,
    'clientOptions' => array(
  'validateOnSubmit'=>true,
  'validateOnChange'=>true,
  'validateOnType'=>false,
     ),
)); ?>
    <table>
        <tr>
            <td>
                <?php echo $form->dropDownList($model, 'countriesIssued', $select = array($_POST['countriesIssued'])); ?>
            </td>
        </tr>
    </table>

此代码返回给我一个 CExeption属性“Product.countriesIssued”未定义。

当我使用 Chtml 完成所有这些操作时,一切都很好,并且有一个包含国家名称的下拉列表,如下所示:

<?php echo CHtml::dropDownList($form, 'countriesIssued', $select = array($_POST['countriesIssued']),
                  CHtml::listData($countriesIssued, 'code', 'name')); ?>

我需要下拉列表是带有值(国家)的字段有人可以帮助我吗?谢谢。

4

1 回答 1

2

下面的代码将为克服您面临的错误提供一些帮助。

在你的控制器中写这个

    $criteria = new CDbCriteria;
    $criteria->order = 'country_name ASC';
    $locations = Countries::model()->findAll($criteria);
    $dataAry['countries'] = CHtml::listData($locations, 'id', 'country_name');
    $this->render('index', $dataAry);

把这个写在你的表格里

    echo $form->dropDownList($model, 'attribute', $countries, array('prompt' => 'Select Country'));
    echo $form->error($model, 'attribute');

更多信息请访问http://www.yiiframework.com/forum/index.php/topic/9693-cactiveform-dropdownlist-selectedselected/

于 2013-05-13T10:34:54.603 回答