我想用Cakephp模型验证来验证字段,而不保存数据,我在控制器中使用以下代码。
$this->Model->set($this->data);
if ($this->Model->validates()) {
......
}
但在这里,我只想验证某些特定字段,例如'email_field'和其中一条规则'email'。在模型中,我已经为'email_field'指定了一些其他规则,如'unique'和'notempty',但我不想验证这些规则。
如何实现?
答案 0 :(得分:9)
以上内容肯定会有效,但是当cake已经记录了如何验证模型的特定字段时,它不是一个优雅的解决方案。
if ($this->Model->validates(array('fieldList' => array('field1', 'field2')))) {
// valid
} else {
// invalid
}
答案 1 :(得分:5)
你有不同的选择
您可以动态取消其他规则:
unset($this->Model->validate['field']['someRuleName']);
或者您可以为此字段分配一个全新的规则集
或者您可以使用不同的“不存在”字段进行此验证,例如“some_other_field”有特殊规则。
答案 2 :(得分:0)
......
$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')))) {
......
}