在Yii中生成的表单返回错误,未定义属性

时间:2013-05-13 09:58:23

标签: php forms yii

我有控制器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')); ?>

我需要将下拉列表作为值的字段(国家/地区)任何人都可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分: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/