Привет, я разрабатываю приложение с использованием laravel, есть ли способ сделать поле ввода даты больше или равно другому полю даты с помощью проверки.
Я знаю, что я могу достичь этого через jquery, и у меня уже есть эта работа, но я хочу знать, насколько это возможно с помощью проверки laravel, поскольку laravel имеет некоторые предопределенные проверки.
Например
protected $validationRules = array ( 'a' => 'date', 'b' => 'date|(some validation so that the b value is greater than or equal to that of 'a')' );
РЕДАКТИРОВАТЬ
Если есть какой-либо другой подход для решения проблемы с использованием концепции laravel, пожалуйста, скажите мне
Я пытался
Validator::extend('val_date', function ($attribute,$value,$parameters) { return preg_match("between [start date] and DateAdd("d", 1, [end date])",$value); });
заранее спасибо
У меня такая же проблема. before
и after
не работает, когда даты могут быть одинаковыми. Вот мое короткое решение:
// 5.1 or newer Validator::extend('before_or_equal', function($attribute, $value, $parameters, $validator) { return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value); }); // 5.0 & 4.2 Validator::extend('before_or_equal', function($attribute, $value, $parameters) { return strtotime(Input::get($parameters[0])) >= strtotime($value); });
$rules = array( 'start'=>'required|date|before_or_equal:stop', 'stop'=>'required|date', );
EDIT: Laravel 5.3.25 и более поздние версии имеют новые встроенные правила: before_or_equal
и after_or_equal
Ответ Эмиля Аспмана правильный, но он не работает для Laravel 5.2. это решение работает для Laravel 5.2:
Validator::extend('before_equal', function($attribute, $value, $parameters, $validator) { return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value); });
Правильное решение было бы, если бы вы расширили Validator своим собственным правилом. Простой пример из документов:
Validator::extend('foo', function($attribute, $value, $parameters) { return $value == 'foo'; });
Подробнее здесь
Да, вы можете использовать after:date
или before:date
:
protected $rules = array( 'date' => 'after:'.$yourDate );
или альтернативно
protected $rules = array( 'date' => 'before:'.$yourDate );
Он будет делать то, что вы описали. Также ознакомьтесь с официальной документацией . Вы также можете указать собственные правила, используя специальные правила проверки .