cakephp 2.3中非数据库字段的自定义验证方法

时间:2013-05-31 19:44:58

标签: validation cakephp field

我试图在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;

    }

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

2 个答案:

答案 0 :(得分: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;
}

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

答案 1 :(得分: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规则

则不需要