我有控制器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')); ?>
我需要将下拉列表作为值的字段(国家/地区)任何人都可以帮助我吗? 感谢。
答案 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/