0

次のコントローラーがあるとします。

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、バリデーターはトリガーされません。なんで?

4

2 に答える 2

2

バリデーターは、データの挿入または更新用であり、クエリデータ用ではありません。

于 2012-07-07T12:58:54.163 に答える
2

検証メソッドを手動で実行する必要があります(データを保存している場合を除く)。

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

データを挿入/更新すると、バリデーターが自動的に実行されます。

于 2012-07-07T13:00:31.647 に答える