Я думаю, что выбрал решение, которое соответствует моим потребностям.
http://bakery.cakephp.org/articles/view/multivalidatablebehavior-using-many-validation-rulesets-per-model
Вместо того, чтобы определять несколько правил для каждого поля, это поведение подразумевает определение нескольких «общих» правил, в соответствии с которыми вы определяете все свои правила, связанные с полями.
Итак, вместо того, чтобы делать:
var $validate=array(
"username" => array(
"usernameCheckForRegister" => array(
"rule" => ...,
"message" => ...
),
"usernameCheckForLogin" => array(
"rule" => ...,
"message" => ...
)
),
//rules for other fields
);
Вы делаете:
/**
* Default validation ruleset
*/
var $validate = array(
'username' => /* rules */,
'password' => /* rules */,
'email' => /* rules */
);
/**
* Custom validation rulesets
*/
var $validationSets = array(
'register' => array(
'username' => /* rules */,
'password' => /* rules */,
'email' => /* rules */,
),
'login' => array(
'username' => /* rules */,
'password' => /* rules */
)
);
И затем в вашем контроллере вы переключаетесь между наборами проверки, как это: $this->User->setValidation('register');
Несмотря на то, что вам нужно написать немного больше кода, я думаю, что это решение лучше всего соответствует моим потребностям