0

如何在不删除我的 ORM 模型规则功能的情况下跳过对特定 orm 保存的验证?

我正在使用 kohana 3.3

4

2 回答 2

3

看看rules()方法。您可以轻松添加自定义检查,如下所示:

// required by default
protected $_validation_required = TRUE;

public function rules()
{
    if ($this->validation_required())
    {
         // return all model rules
         return array(
              // default rules here
         );
         // or 
         // if extending model with existing rules
         return parent::rules(); 
    }
    else
    {
         // skip validation 
         return array();
    }
}

public function validation_required($required = TRUE)
{
     if ($required === NULL)
     {
           // work as getter
           return $this->_validation_required;
     }

     // set value
     $this->_validation_required = (bool)$required;
     return $this;
}

当然,您可以使用针对不同事件(插入/更新等)的自定义规则来扩展此代码。

附言。您也可以覆盖check()方法并返回TRUEwhen $this->validation_required() == TRUE。但我更喜欢发送空规则(因为rules()是专门为定制而设计的,而check()它是一种系统方法)。

于 2012-12-14T21:41:16.567 回答
0

在接受的答案中,使用像 à getter 这样的 $this->validation_required() 函数似乎是错误的($required 参数的默认值是!= NULL)

public function validation_required($required = TRUE)
{
    if ($required === NULL)
    {
       // work as getter
       return $this->_validation_required;
    }
...
于 2014-08-20T10:28:44.517 回答