1

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

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

但在这里我只想验证一些特定的字段,如“email_field”及其规则之一“email”。在模型中,我为“email_field”指定了一些其他规则,例如“unique”和“notempty”,但我不想验证这些规则。

如何实现?

4

3 回答 3

9

上面的方法肯定会起作用,但是当 cake 已经记录了如何验证模型的特定字段时,它不是一个优雅的解决方案。

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

更多详情请参阅食谱

于 2012-04-26T11:34:00.097 回答
5

你有不同的选择

您可以动态取消设置其他规则:

unset($this->Model->validate['field']['someRuleName']);

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

或者您可以为此验证使用不同的“不存在”字段,例如具有特殊规则的“some_other_field”。

于 2012-04-26T10:17:13.403 回答
1
......
$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')))) {
    ......
}
于 2017-03-02T13:25:08.910 回答