【问题标题】:CakePHP validation form fieldCakePHP 验证表单字段
【发布时间】:2015-12-10 12:17:43
【问题描述】:

我正在使用 Cakephp (v3.0)。我有一个我想要的字段“num_max_intents”,它只需要大于 0 的值,而且我希望“日期”字段大于实际日期。 我的 validationDefault() 代码是下一个:

public function validationDefault(Validator $validator){
    $validator->notEmpty('num_max_intents')
              ->notEmpty('package')
              ->notEmpty('date');
    return $validator;
}

最简单的方法是什么?

【问题讨论】:

    标签: php forms validation cakephp


    【解决方案1】:

    对于简单的解决方案,请使用range 验证器:

    $validator->add(
        'num_max_intents', 
        'valid', 
        ['rule' => ['range', 0, PHP_INT_MAX]]
    );
    

    此验证器需要设置下限和上限,因此您必须在此处使用一些值。您可以在Cake\Validation\Validation 中找到所有验证器。

    【讨论】:

      【解决方案2】:

      您可以使用闭包作为自定义验证规则。如果规则有效,请记住返回true,如果失败则返回false。例如,要检查日期字段是否大于当前日期:-

      public function validationDefault(Validator $validator){
          $validator
              ->add('date', 'valid', ['rule' => function ($value) {
                  return $value > date('Y-m-d');
              }]);
          return $validator;
      }
      

      【讨论】:

        【解决方案3】:

        要验证“日期”字段,我正在使用此代码:

        public function validationDefault(Validator $validator){
            $validator->add('date', 
                            'valid', [
                                'rule' => function ($value) {
                                    return $value > date('Y-m-d'); },
                                'message' => 'Invalid date.'
                            ]
                      )
                      ->notEmpty('date');
            return $validator;
        }
        

        但是,当我在表单上选择的日期小于实际日期时,验证器无法正确运行并且不显示错误消息...怎么了?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-14
          • 2011-03-21
          • 1970-01-01
          • 1970-01-01
          • 2013-05-11
          相关资源
          最近更新 更多