我想使用 Cakephp 模型验证来验证字段,而不保存数据,为此我在控制器中使用以下代码。
$this->Model->set($this->data);
if ($this->Model->validates()) {
......
}
但在这里我只想验证一些特定的字段,如“email_field”及其规则之一“email”。在模型中,我为“email_field”指定了一些其他规则,例如“unique”和“notempty”,但我不想验证这些规则。
如何实现?
我想使用 Cakephp 模型验证来验证字段,而不保存数据,为此我在控制器中使用以下代码。
$this->Model->set($this->data);
if ($this->Model->validates()) {
......
}
但在这里我只想验证一些特定的字段,如“email_field”及其规则之一“email”。在模型中,我为“email_field”指定了一些其他规则,例如“unique”和“notempty”,但我不想验证这些规则。
如何实现?
上面的方法肯定会起作用,但是当 cake 已经记录了如何验证模型的特定字段时,它不是一个优雅的解决方案。
if ($this->Model->validates(array('fieldList' => array('field1', 'field2')))) {
// valid
} else {
// invalid
}
你有不同的选择
您可以动态取消设置其他规则:
unset($this->Model->validate['field']['someRuleName']);
或者您可以为该字段分配一个全新的规则集
或者您可以为此验证使用不同的“不存在”字段,例如具有特殊规则的“some_other_field”。
......
$this->Registry->validate = array(
'email_field' => array(
'between' => array(
'rule' => array('between', 10, 100),
'message' => 'Your custom message here',
'required' => true,
),
)
);
$this->Model->set($this->data);
if ($this->Model->validates(array('fieldList' => array('email_field')))) {
......
}