Cakephp使用特定规则验证特定字段,而不保存控制器中的数据

时间:2012-04-26 10:00:04

标签: cakephp

我想用Cakephp模型验证来验证字段,而不保存数据,我在控制器中使用以下代码。

$this->Model->set($this->data);
if ($this->Model->validates()) {
   ......
}

但在这里,我只想验证某些特定字段,例如'email_field'和其中一条规则'email'。在模型中,我已经为'email_field'指定了一些其他规则,如'unique'和'notempty',但我不想验证这些规则。

如何实现?

3 个答案:

答案 0 :(得分:9)

以上内容肯定会有效,但是当cake已经记录了如何验证模型的特定字段时,它不是一个优雅的解决方案。

   if ($this->Model->validates(array('fieldList' => array('field1', 'field2')))) {
       // valid
   } else {
      // invalid
   }

For more detail see cookbook

答案 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')))) {
    ......
}