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

Sit*_*nsu 1 cakephp

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

$this->Model->set($this->data);
if ($this->Model->validates()) {
   ......
}
Run Code Online (Sandbox Code Playgroud)

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

如何实现?

Eht*_*ham 9

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

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

有关详细信息,请参阅食谱


mar*_*ark 5

你有不同的选择

你可以动态取消其他规则:

unset($this->Model->validate['field']['someRuleName']);
Run Code Online (Sandbox Code Playgroud)

或者您可以为此字段分配一个全新的规则集

或者您可以使用不同的"不存在"字段进行此验证,例如具有特殊规则的"some_other_field".