如何验证数组中的模型字段


How to validate the model fields in array

我有三个具有相同id的文本字段。用户不能填写三个文本框。它们可能是填充的一个或两个。现在,我如何使用yii模型规则验证文本框。

<?php echo $form->textArea($model,'taskname[]',array('class'=>'bg-focus form-control','value'=>$edit_info['varProjectname'])); ?>

那么你的表是什么?您可以在控制器中实现这一点,在那里您可以检查填充了多少字段。例如,使用if语句进行检查,如果有两个字段未填写,则使用

Yii::app()->user->setFlash();
Yii::app()->end();

关于Yii::app()->user->setFlash(),你可以在这里阅读http://www.yiiframework.com/wiki/21/how-to-work-with-flash-messages/

当你说"same id",然后你的问题说"数组中的模型字段"时,我不完全理解。假设你谈论的是"同一模型"中的三个字段,你可以使用如下自定义验证:

使用自定义验证方法:例如[注意:这将给所有三个字段添加错误]

在您的规则中:

    ...
    array('fieldOne, fieldTwo, fieldThree', 'validateThreeFields'),
    ...

public function validateThreeFields($attribute, $params) {
  // check if all fields empty
  if ((empty($this->fieldOne) && empty($this->fieldTwo) && empty($this->fieldThree))
        // or if none are empty
        || (!empty($this->fieldOne) && !empty($this->fieldTwo) && !empty($this->fieldThree))) {
    $this->addError($attribute, 'Your error message');
  }
}