2

(CakePHP のモデル検証を使用して) データを検証して、少なくとも「a」または「b」にデータがあることを確認する方法はありますか (両方にデータがある必要はありません)。

4

3 に答える 3

4

あなたのモデルで、このようなことをしてください。この関数は、保存操作を実行するときに呼び出されます。

編集済み

public $validate = array(
    'a' => array(
        'customCheck' => array(
            'rule' => 'abCheck',
            'message' => 'You must enter data in a or b.'
        )
    ),
    'b' => array(
        'customCheck' => array(
            'rule' => 'abCheck',
            'message' => 'You must enter data in a or b.'
        )
    )
);

//Function must be public for Validator to work
//Checks to see if either a or b properties are set and not empty
public function abCheck(){
    if((isset($this->data['Model']['a']) && !empty($this->data['Model']['a'])) || (isset($this->data['Model']['b']) && !empty($this->data['Model']['b']))){
         return true;
    }
    return false;
}
于 2011-06-02T01:00:23.637 に答える
1

「カスタム検証」を通じてこれらの条件を検証できます。

これを参照してください:独自の検証を追加する

于 2011-06-01T17:15:49.540 に答える
0

代わりにこれを試してください:

public $validate = array(
     'a' => array(
         'customCheck' => array(
             'rule' => array('abCheck', 1),
             'message' => 'You must enter data in a or b.'
         )
     ),
     'b' => array(
         'customCheck' => array(
             'rule' => array('abCheck', 1),
             'message' => 'You must enter data in a or b.'
         )
     )
 );

 //Function must be public for Validator to work
 //Checks to see if either a or b properties are set and not empty
 public function abCheck(){
     if((isset($this->data['Model']['a']) && !empty($this->data['Model']['a'])) > || (isset($this->data['Model']['b']) && !empty($this->data['Model']['b']))){
          return 1;
     }
     return -1;
 }
于 2012-07-13T11:28:29.123 に答える