2015-12-10 2 views
1

Я использую CakePHP (v3.0). У меня есть поле «num_max_intents», что я хочу, что только принимает значения больше 0, а также я хочу, чтобы поле «дата» будет больше, чем фактическая дата .. My validationDefault (код) является следующим:Поле формы проверки CakePHP

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

Каков самый простой способ сделать это?

ответ

1

Для простого решения используйте range валидатор:

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

Этот валидатор требует как нижний и верхний предел необходимо установить, так что вы должны использовать какое-то значение здесь. Вы можете найти все валидаторы в Cake\Validation\Validation.

0

Вы можете использовать закрытие в качестве настраиваемого правила валидации. Просто не забудьте вернуть true, если правило проверяет и false, если оно не выполнено. Например, чтобы проверить поле даты больше, чем текущая дата: -

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

Чтобы проверить поле «Дата» Я использую этот код:

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; 
} 

Но когда я выбрать дату меньше чем фактическая дата моей формы, валидатор работает неправильно и не отображает сообщение об ошибке ... Что случилось?

Смежные вопросы