cakephp验证规则没有解雇

时间:2012-07-07 12:57:24

标签: php cakephp

给出以下控制器:

class UsersController extends AppController {
    public function findUser() {
        ...
        $this->User->findUser($this->request->query['u']);
        ...
    }
}

以下型号:

class User extends AppModel {
    public $validate = array(
        'username' => array(
            'rule' => array('minLength', '8'),
            'message' => 'Username must be at least 8 characters'
        )
    );

    public function findUser($username) {
        return $this->find('all', array(
            'conditions' => array('username' => $username),
        ));
    }
}


例如,如果我在url:http://example.com/users/findUser?u=a中键入此内容,则验证程序不会被触发。为什么呢?

2 个答案:

答案 0 :(得分:2)

验证器用于插入或更新数据,而不用于查询数据。

答案 1 :(得分:2)

您必须手动执行validates方法(除非您保存数据):

if ($this->User->validates()) {
    // valid
} else {
    // not valid
    $errors = $this->User->validationErrors;
}

插入/更新数据时会自动执行验证程序。