モデルのデータを検証するとき、データはすでにset()
です。これは、モデルの$data
プロパティでアクセスできることを意味します。次の例では、検証しているフィールドをチェックして、検証ルールで定義されている他のフィールド(パスワード確認フィールドなど)と同じであることを確認します。
検証ルールは次のようになります。
var $validate = array(
'password' => array(
'minLength' => array(
'rule' => array('minLength', 6),
'message' => 'Your password must be at least 6 characters long.'
),
'notempty' => array(
'rule' => 'notEmpty',
'message' => 'Please fill in the required field.'
)
),
'confirm_password' => array(
'identical' => array(
'rule' => array('identicalFieldValues', 'password'),
'message' => 'Password confirmation does not match password.'
)
)
);
次に、検証関数は渡されたフィールドのデータ(confirm_password)を調べ、それをルールで定義したデータ(に渡された)と比較し$compareFiled
ます。
function identicalFieldValues(&$data, $compareField) {
// $data array is passed using the form field name as the key
// so let's just get the field name to compare
$value = array_values($data);
$comparewithvalue = $value[0];
return ($this->data[$this->name][$compareField] == $comparewithvalue);
}
これは単純な例ですが、を使用して何でもできます$this->data
。
投稿の例は次のようになります。
function requireNotEmpty(&$data, $shouldNotBeEmpty) {
return !empty($this->data[$this->name][$shouldNotBeEmpty]);
}
そしてルール:
var $validate = array(
'verify_password' => array(
'rule' => array('requireNotEmpty', 'password')
)
);