与cakephp 2.3.0的MultivalidatableBehavior。不工作

时间:2014-02-28 09:04:29

标签: cakephp cakephp-2.3 cakephp-appmodel

我在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。

2 个答案:

答案 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()) {
    ...

获取验证结果。