Yii:模型的规则没有用变量验证

时间:2013-09-08 07:58:30

标签: php yii

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

0 个答案:

没有答案