Cakephp 3.0表单验证

mjs*_*sey 2 php validation cakephp model cakephp-3.0

我正在玩Cakephp 3.0,并想知道如何验证未保存到数据库的数据.

例如,我知道在模型中(现在看起来像一个"表"),你将一个validationDefault方法添加到模型中,当数据被保存到数据库时自动调用,即新的用户被添加到数据库中.但是,如何从登录表单验证数据,而不是保存到数据库然后显示这些错误?

例如,在用户登录时,我想检查是否已输入字段,是否已超过特定大小等

Jos*_*uez 6

从官方文档中获取,您可以在控制器中实例化验证器并通过传递验证您的数据 $this->request->data()

use Cake\Validation\Validator;

...

$validator = new Validator();
$validator
    ->validatePresence('email')
    ->add('email', 'validFormat', [
        'rule' => 'email',
        'message' => 'E-mail must be valid'
    ])
    ->validatePresence('name')
    ->notEmpty('name', 'We need your name.')
    ->validatePresence('comment')
    ->notEmpty('comment', 'You need to give a comment.');

$errors = $validator->errors($this->request->data());
if (!empty($errors)) {
    // Send an email.
}
Run Code Online (Sandbox Code Playgroud)

http://book.cakephp.org/3.0/en/core-libraries/validation.html