我在cakephp中使用'MultivalidatableBehavior'。虽然它与以前的版本一起运行良好。但它不能与Cakephp 2.4.0版本一起使用。他们对这种行为有任何改变吗?因为当我使用这段代码时。
var $ validationSets = array('中提到的规则集'。);
虽然我的请求通过了Behavior类,但它没有在所需的字段上进行验证。我还检查了$this->request->data
它也是有效的,并且对于编写规则集的同一模型。
我尝试在MultivalidatableBehavior类中使用die
进行调试。虽然在valiation期间,我的请求属于setValidation(&$model, $rules = array()) {
的功能。请提示它是否与更高版本的cakephp2.3兼容。
我试过的代码..
型号代码:
var $actsAs = array('Multivalidatable');
var $validationSets = array(
'login' => array(
'username' => array('required' => array('rule' => array('notEmpty'), 'message' => 'Username is required !!')),
'password' => array('required' => array('rule' => array('notEmpty'), 'message' => 'Password is required !!')),
),
);
控制器呼叫。
$this->User->setValidation('login'); Fields are also with same name.
它没有验证如果我把if($this->User->setValidation('login'))
它返回false。
答案 0 :(得分:1)
感谢 Piotr Beschel 帮助我。我不应该使用任何形式的行为。它也可以在没有行为的情况下实现。我的模型代码是
public $validationAdmin = array(
'adminLogin' => array(
'username' => array('required' => array('rule' => array('notEmpty'), 'message' => 'Please enter your username !!')),
'password' => array('required' => array('rule' => array('notEmpty'), 'message' => 'Please enter your password !!')),
),
'adminForgotPassword' => array(
'email' => array('required' => array('rule' => array('notEmpty'), 'message' => 'Please enter your email address !!'),
'email' => array('rule' => array('email'), 'message' => 'Please enter valid mail address')),
),
);
这只是创建名为 $ valdiationAdmin 的变量我已将其命名为admin,以了解以下规则集是否为admin。
我的样本控制器代码是。
$this->Admin->validate = $this->Admin->validationAdmin['adminLogin'];
就是这样。如果表单有数据要保存,它会像黄油一样移动。如果数据只是验证我必须强制表单来验证它(如果登录没有保存数据)。
if ($this->Admin->validates()) {
} else {
$errors = $this->Admin->validationErrors;
$this->set('validationErrors', $errors);
}
它会验证我的表格。甚至在ctp文件中向表单字段添加错误消息。我需要不来编写 $ this-> form->错误('fieldname');
再次感谢所有观众。如果更好的话,建议我。我正在考虑验证其他表单的数据,如果与一个表单相关联,具有相同的实现。如果可以,请提供帮助。
答案 1 :(得分:0)
方法
$this->User->setValidation('login')
仅选择将使用哪个验证集。
使用:
if ($this->User->validates()) {
...
获取验证结果。