【问题标题】:How can I create a custom function for validation rules in yii?如何在 yii 中为验证规则创建自定义函数?
【发布时间】:2013-01-23 09:13:31
【问题描述】:

我创建了一个包含一些实体(比如姓名、地址等)的表单。我已经在模型类中定义了验证规则。客户端验证按要求完美运行。现在我需要创建自定义验证规则。为此,参考 http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/#hh0 ,我在我的模型中创建了一个名为 valid_number() 的方法,并定义了一个简单的空值检查(我知道有用于验证空值、电子邮件、密码等的内置规则。在这里我已经演示了一种简单的验证方法,实际上我正计划进行一些自定义验证)。请参考下面的代码。请让我知道我做错了什么。

//模型

class Employee extends CActiveRecord{
  public $number;
  public function rules(){
     return array(
                  array('number','valid_number'),
                  );
  }


 public function valid_number($attribute,$params){
    if($this->$attribute == '' ){
         CModel::addError($attribute, 'Number is null');
    }
   }

//查看

</fieldset>
   <?php echo $form->textFieldRow($model, 'number'); ?>
</fieldset>

【问题讨论】:

  • 错误是什么?模型验证没有任何错误,发生了 php 错误?
  • 那么到底发生了什么?你的方法被调用了吗? var_dump($this-&gt;$attribute) 输出什么?

标签: php yii validation


【解决方案1】:

CModel::addError 应该是$this-&gt;addError

【讨论】:

  • '不工作'不工作,输出是什么?什么错误?您从调试尝试中获得了什么信息?
  • @Pradeep 你应该调用 CFormModel::error 函数来显示数字属性错误。像这样:&lt;?php echo $form-&gt;error($model, 'number'); ?&gt; 如果只是验证属性为空,你也许可以试试required验证器
【解决方案2】:
<?php 
$this->addError($attribute, 'Your error message');
?>

【讨论】:

    【解决方案3】:

    为什么要调用静态函数CModel::addError

    您只需调用对象的addError 即可:

    public function valid_number($attribute, $params) {
        if ($this->$attribute == '' ) {
            $this->addError($attribute, 'Number is null');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多