如何在不删除我的 ORM 模型规则功能的情况下跳过对特定 orm 保存的验证?
我正在使用 kohana 3.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()
方法并返回TRUE
when $this->validation_required() == TRUE
。但我更喜欢发送空规则(因为rules()
是专门为定制而设计的,而check()
它是一种系统方法)。
在接受的答案中,使用像 à getter 这样的 $this->validation_required() 函数似乎是错误的($required 参数的默认值是!= NULL)
public function validation_required($required = TRUE)
{
if ($required === NULL)
{
// work as getter
return $this->_validation_required;
}
...