Cakephp 3.x自定义验证规则的创建和使用

时间:2015-10-20 09:54:44

标签: validation cakephp

在cakephp3自定义验证规则中:

如何使用全局函数验证方法。

$validator->add('title', 'custom', [
    'rule' => 'validate_title'
]);

请以前做过的人吗?请给我一些示例程序。

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

我尝试了以上但它不起作用..?

3 个答案:

答案 0 :(得分:13)

这是使用全局函数概念进行验证的示例:

namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Validation\Validator;

    public function validationDefault(Validator $validator) {
        $validator->add('title',[
        'notEmptyCheck'=>[
        'rule'=>'notEmptyCheck',
        'provider'=>'table',
        'message'=>'Please enter the title'
         ]
        ]);
       return $validator;
    }

    public function notEmptyCheck($value,$context){
        if(empty($context['data']['title'])) {
            return false;
        } else {
            return true;
        }
    }

答案 1 :(得分:5)

rev1

使用$ context变量将当前值与其他字段(如$ value> = $ context ['data'] ['another_field_name'];

进行混淆

答案 2 :(得分:-3)

这是一个验证示例。

在你的表格中。

public function validationDefault(Validator $validator)
{
    $validator = new Validator();
    $validator
        ->notEmpty('username', 'A username is required')
        ->add('username', [
            'emailValid' => [
                'rule' => ['email', true],
                'message' => 'You must provide a valid email'
            ],
            'emailUnique' => [
                'message' => 'The email you provided is already taken. Please provide another one.',
                'rule' => 'validateUnique', 
                'provider' => 'table'
            ]
        ]);
    return $validator;
}