【问题标题】:CakePHP 3.0 - Regular expression validationCakePHP 3.0 - 正则表达式验证
【发布时间】:2015-08-18 08:33:30
【问题描述】:

我需要根据正则表达式验证输入。

 //Validator
 $validator
            ->notEmpty('sl_no')
            ->add('reg_no', 'validFormat',[
                    'rule' => '/^([ABCD]{2,2}[0-9]{4,4})$/i',
                    'message' => 'Please enter a valid serial number.'
            ]);

但我收到以下错误:

方法 /^([ABCD]{2,2}[0-9]{4,4})$/i 不存在。

另外,与Cake 2 Documentation 不同,Cake 3.0 validation Documentation 中没有提到正则表达式。

是否已移动或修改?

【问题讨论】:

  • 事后很长一段时间,但请注意,您可以编写 {2} 和 {4} 而不是 {2,2} 和 {4,4} 来精确匹配 2 和分别为 4 个字符。

标签: php regex cakephp cakephp-3.0


【解决方案1】:

试试这个

 $validator
        ->notEmpty('sl_no')
        ->add('reg_no', 'validFormat',[
                'rule' => array('custom', '/^([ABCD]{2,2}[0-9]{4,4})$/i'),
                'message' => 'Please enter a valid serial number.'
        ]);

【讨论】:

  • 并解释为什么会这样。在 CakePHP 3.0 中,您有一个 Validator 对象,它使用 Validation class 中描述的集合作为默认提供程序。在该课程中,您对 custom() method 感兴趣,它用于根据 REGEX 字符串检查字段。所以当你add()它时,你需要在rule键的值内指定规则名称(custom)和参数(你的正则表达式字符串)。
  • 是否可以将其与 DefaultPasswordHasher 集成? IE 在匹配了这个验证器之后,它会通过一个函数运行吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-17
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2012-04-19
  • 2021-02-24
  • 2014-02-25
相关资源
最近更新 更多