我正在使用变量来填充模型中的公共函数规则(),并且当表单字段为空时(即使它被标记为必需),CActiveForm内部的验证错误(在视图中调用)也不会触发)。
A)这是根据需要显示的内容,但不验证(我需要它来验证)
array_push($required,'email');
array_push($rules,array(implode(',',$required), 'required'));
return $rules;
B)这是根据需要显示的内容,并且确实(确切地说它应该如何工作)
array_push($rules,array('email', 'required'));
return $rules;
我如何获得示例A验证例如B? (两个示例都输出相同的内容。)
更新:以下是整个功能,例如A.(不验证。)
public function rules()
{
$required = array();
$rules = array();
$model=self::getFields();
foreach ($model as $field) {
$field_rule = array();
if ($field->REQUIRED=='1'){
array_push($required,$field->VARNAME);
//print_r($field->VARNAME); //outputs: email
}
if ($field->FIELD_TYPE=='VARCHAR'||$field->FIELD_TYPE=='TEXT') {
$field_rule = array($field->VARNAME, 'length', 'max'=>$field->FIELD_SIZE, 'min' => $field->FIELD_SIZE_MIN);
array_push($rules,$field_rule);
}
}
array_push($rules,array(implode(',',$required), 'required'));
return $rules;
}
public static function getFields() {
$form_id=Yii::app()->params['form-id'];
$model=FormField::model()->findAllByAttributes(array('FORM_ID'=>$form_id), array('order'=>'POSITION ASC'));
return $model;
}
以下是规则功能,例如B.(确认。)
public function rules()
{
$required = array();
$rules = array();
array_push($rules,array('email', 'required'));
$field_rule = array('email', 'length', 'max'=>'255', 'min'=>'0');
array_push($rules,$field_rule);
return $rules;
}
当我在上述函数中返回之前print_r($ rules)时,我最终获得了相同的输出数组:
Array ( [0] => Array ( [0] => email [1] => length [max] => 255 [min] => 0 ) [1] => Array ( [0] => email [1] => required ) )
我希望这是一个简单的PHP错误,但这让我相信这是一个Yii问题。