我正在使用变量来填充模型中的公共函数 rules(),当表单字段为空时(即使它被标记为必需),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 问题。