Yii 对下拉列表输入项的验证失败
朋友们 我有一张有几个项目的登记表,这些项目的下拉列表似乎没有被提交的表格选中 视图:Yii 对下拉列表输入项的验证失败,yii,Yii,朋友们 我有一张有几个项目的登记表,这些项目的下拉列表似乎没有被提交的表格选中 视图: </div> <div class="row"> <?php echo CHtml::activeLabel($model, 'Gjinia'); ?> <?php echo CHtml::dropDownList('sex', 0, $data = array(0 => 'Mashkull', 1 => 'Fem
</div>
<div class="row">
<?php echo CHtml::activeLabel($model, 'Gjinia'); ?>
<?php echo CHtml::dropDownList('sex', 0, $data = array(0 => 'Mashkull', 1 => 'Femer'))
?>
</div>
<div class="row">
<?php echo CHtml::activeLabel($model, 'Arsimimi'); ?>
<?php echo CHtml::dropDownList('education', 0, $data = array(0 => 'Ulet', 1 => 'Mesem', 2 => 'Larte')) ?>
</div>
<div class="row">
<?php echo CHtml::activeLabel($model, 'Statusi Martesor'); ?>
<?php echo CHtml::dropDownList('marital_status', 0, $data = array(0 => 'Beqar/e', 1 => 'I/E divorcuar', 2 => 'I/E martuar', 3 => 'I/E veje')) ?>
</div>
public function rules() {
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('name, lastname, sex, education,
marital_status, employment,
dob, municipality, address,
cell_no, email, initialPassword,
repeatPassword', 'required'),
array('sex, employment, municipality,', 'numerical', 'integerOnly' => true),
array('email, initialPassword, repeatPassword, name, lastname', 'length', 'max' => 100),
array('initialPassword, repeatPassword', 'required', 'on' => 'insert'),
array('initialPassword, repeatPassword', 'length', 'min' => 6, 'max' => 40),
array('initialPassword', 'compare', 'compareAttribute' => 'repeatPassword'),
);
}
提交表格后,当我在$\u POST['Auser']上打印时,我得到以下信息:
Array ( [name] => Name [lastname] => Lname [address] => B ellit
[cell_no] => 044 568 178 [email] => gzzi@gmail.com [id] => [sex] =>
[education] => [marital_status] => [employment] => [industry] => [dob] =>
[municipality] => [password] => )
以及错误消息:
Sex cannot be blank.
Education cannot be blank.
Marital Status cannot be blank.
Employment cannot be blank.
Dob cannot be blank.
Municipality cannot be blank.
您的dropdownlist的定义如下:
<div class="row">
<?php echo CHtml::activeLabel($model, 'Statusi Martesor'); ?>
<?php echo CHtml::activeDropDownList($model, 'marital_status', array(0 => 'Beqar/e', 1 => 'I/E divorcuar', 2 => 'I/E martuar', 3 => 'I/E veje')) ?>
</div>
而不是:
<div class="row">
<?php echo CHtml::activeLabel($model, 'Statusi Martesor'); ?>
<?php echo CHtml::dropDownList('marital_status', 0, $data = array(0 => 'Beqar/e', 1 => 'I/E divorcuar', 2 => 'I/E martuar', 3 => 'I/E veje')) ?>
</div>
在第一个实例中(我使用了CHtml::activeDropDownList($model,'attribute\u name')
),您可以在执行$model->attributes=$\u POST['ModelName')之后访问下拉属性
像这样$model->sex
,$model->mutual\u status
,因为POST数组将类似于:$\u POST['ModelName']['sex']
,$\u POST['ModelName']['mutual\u status']
当您使用CHtml::dropDownList('field\u name','selected\u value',array('option1','option2'))
时,POST数组的形式为$\u POST['field\u name']
,对于ActiveRecord,您需要的是$\u POST['ModelName']['field\u name']]
我希望这能解决您的问题。回答得很好,但这样我就出现了错误“为foreach()提供的参数无效”,问题似乎出在数据部分:数组(0=>'Beqar/e',1=>'I/e divorcuar',2=>'I/e martuar',3=>'I/e veje'))有什么想法吗?好的,我已经解决了这个问题:activeDropDownList上不应该有选择值:应该是这样的:谢谢,很高兴我能帮上忙