1

フォームには、相互に対応する必要がある 2 つのフィールドがあります。ユーザーが生年月日を DOB フィールドに入力する場合、DOB よりも長い居住期間を入力することはできません。

add.ctp の 2 つのフィールドは次のとおりです。

echo $this->Form->input('DOB',array('label' => 'Date of birth*', 'minYear' => 1900,    'maxYear' => 2000));


echo $this->Form->input('period_of_residence', array('label' =>'Period of residence in   Zimbabwe'));

したがって、ユーザーが年齢を超える居住期間を入力できないように、2つを検証する方法がわかりません。送信時に検証されたとしても、気に入っています。

4

1 に答える 1

3

次のように、モデルに独自のカスタム検証関数を作成できます。

class MyModel extends AppModel {

    public $validate = array(
        'DOB' => array(
            'rule' => 'checkDOB',
            'message' => 'DOB cannot be greater than period of residence.'
        )
    );

    public function checkDOB($check) {
        return strtotime($check['DOB']) < strtotime($this->data['MyModel']['period_of_residence']);
    }
}
于 2012-06-26T16:39:56.970 に答える