0

我试图在 cakephp 2.3 中为非数据库字段调用自定义验证方法,但没有运气。验证方法根本没有被调用。有人可以建议修复并解释这是否是蛋糕的问题?

我的代码

public $validate = array(
        'name' => array
            (
            'rule' => 'notEmpty',
            'message' => 'This field cannot be left blank'
            ),
        'password' => array
            (
            'rule' => 'notEmpty',
            'message' => 'This field cannot be left blank',
            'allowEmpty' => false
            ),
        'verify_password' => array
            (
            'rule' => 'notEmpty',
            'message' => 'This field cannot be left blank',
            'allowEmpty' => false
            ),
        'rule2' => array
            (
            'rule' => array('check_password'),
            'message' => 'passwords must match each other',
            'allowEmpty' => false
            )
        ),
       'email' => 'email',
    );

其中“password”和“verify_passowrd”是非数据库字段。自定义验证方法是

function check_password($check) {

        $value = array_values($check);
        $value = $value[0];


         if($value == $this->data['User']['verify_password'])
             return true;
         else 
             return false;

    }

永远不会调用自定义方法。

4

2 回答 2

0

首先尝试添加一条规则,然后再添加第二条,如果您希望从最终开始测试它是否有效

在这里您可以检查以调用您的自定义函数。

public $validate = array(
        'password' => array(
            'rule'    => 'check_password',
            'message' => 'Slug can only be letters, numbers, dash and underscore'
        )
    );

模型自定义函数

function check_password($check) {

    $value = array_values($check);
    $value = $value[0];


     if($value == $this->data['User']['verify_password'])
         return true;
     else 
         return false;
}

如果我能进一步帮助你,请告诉我。

于 2013-06-01T04:19:52.840 回答
0

rule2 不是表单上的字段,但您为其分配了验证规则

如果你能正确识别你的代码,你会更好地看到错误

public $validate = array(
    'name' => array(
        'rule' => 'notEmpty',
        'message' => 'This field cannot be left blank'
    ),
    'password' => array(
        'rule' => 'notEmpty',
        'message' => 'This field cannot be left blank'  
    ),
    'verify_password' => array(
        'notEmpty' => array(
                    'rule' => array('notEmpty'),
                    'message' => 'This field cannot be left blank'
        ),
        'verify' => array(
                    'rule' => array('check_password'),
                    'message' => 'passwords must match each other'
        )
    ),
   'email' => 'email'
);

allowEmpty 默认为 false,notEmpty 规则不需要

于 2013-07-09T12:24:53.987 回答