1

データを保存せずに、Cakephpモデル検証でフィールドを検証したいのですが、コントローラーで次のコードを使用しています。

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

しかし、ここでは、「email_field」やそのルールの1つである「email」などの特定のフィールドのみを検証したいと思います。モデルでは、「unique」や「notempty」など、「email_field」に他のルールをいくつか指定しましたが、これらのルールを検証したくありません。

どうすればそれを達成できますか?

4

3 に答える 3

9

上記は確実に機能しますが、ケーキがモデルの特定のフィールドを検証する方法をすでに文書化している場合、それは洗練されたソリューションではありません。

   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 に答える