【发布时间】:2014-02-17 10:27:14
【问题描述】:
我在 CakePHP 2 中工作,我一直在尝试使用动态验证,因为当我让用户注册一个帐户(用户名和电子邮件都是必需的)时,我需要不同的规则,但是当用户填写一个忘记密码表格,用户名或电子邮件是必需的,但您不能同时填写用户名和电子邮件。
我从UsersController 拨打beforeFilter 中的$this->User->setValidationRules($this->request->params['action'])。
那么在UserModel类中,我有这个功能:
public function setValidationRules($action) {
if ($action == 'forgotten_password') {
$this->validator()->getField('username')->setRules($this->validationSets['forgottenPassword']);
$this->validator()->getField('email')->setRules($this->validationSets['forgottenPassword']['email']);
} else {
$this->validator()->getField('username')->setRules($this->validationSets['default']);
$this->validator()->getField('email')->setRules($this->validationSets['default']['email']);
}
return true;
}
但我不断收到此错误:“调用非对象上的成员函数 setRules()。”
我一直在努力解决这个问题。在AppModel 类中,我添加了一行:
App::Uses(Validator, Model);
但我仍然遇到同样的错误。
我一直试图弄清楚这个问题,在整个互联网上搜索答案,但我似乎找不到任何答案。如果有人可以帮忙。我将不胜感激。
【问题讨论】:
-
我也刚刚尝试在 AppModel 类中将 App::Uses(Validator, Model) 更改为 App::Uses(ModelValidator, Model) ,但仍然遇到同样的错误。
标签: php validation cakephp model forgot-password