Php 如何使用laravel中的验证使输入日期字段大于或等于另一个日期字段

Php 如何使用laravel中的验证使输入日期字段大于或等于另一个日期字段,php,validation,laravel-4,blade,Php,Validation,Laravel 4,Blade,Hi iam使用laravel开发应用程序是否有任何方法可以使用验证使输入日期字段大于或等于另一个日期字段 我知道我可以通过jquery实现这一点,而且我已经做到了,但是我想知道这是否可以通过laravel验证实现,因为laravel已经得到了一些预定义的验证 比如说 protected $validationRules = array ( 'a' => 'date', 'b' => 'date|(some validation so that

Hi iam使用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')'
    );
编辑

如果有任何其他方法来解决这个问题使用拉维概念,请告诉我

我试过了

Validator::extend('val_date', function ($attribute,$value,$parameters) {
    return preg_match("between [start date] and DateAdd("d", 1, [end date])",$value);
});

提前感谢

如果您使用自己的规则扩展验证器,则正确的解决方案是。文档中的一个简单示例:

Validator::extend('foo', function($attribute, $value, $parameters)
{
    return $value == 'foo';
});

阅读更多内容

是的,您可以像这样使用
在:日期之后
在:日期之前

protected $rules = array(
    'date' => 'after:'.$yourDate
);
或者

protected $rules = array(
    'date' => 'before:'.$yourDate
);
它会完全按照你描述的那样做。另外,请查看。
您也可以使用指定自己的规则。

我也有同样的问题<日期可能相同时,“代码>之前”和“代码>之后”不起作用。以下是我的简短解决方案:

注意:Laravel 5.3.25及更高版本具有新的内置规则:以及





埃米尔·阿斯普曼的答案是正确的,但不适用于Laravel 5.2。此解决方案适用于Laravel 5.2:

 Validator::extend('before_equal', function($attribute, $value, $parameters, $validator) {
     return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
 });

感谢您的回复,我希望after:date只允许指定日期之后的日期我需要验证规则来满足after和same规则,这样我的日期字段将允许相同和after日期,但不允许在date之前。我还在“.$yourDate”之后尝试了“date'=>”,但它引发了以下错误:-[语法错误,意外',预期')]
之后
之前
在时间相等时不允许相等。我阅读了文档,但我不确定如何编写表达式以满足我的条件。我已用我尝试过的内容更新了我的问题。请看一看。注意,这对Laravel 5.2不起作用。请参见我的答案。您将第一块代码放在哪里?在您的控制器?@user3253002中,您可以将第一个代码块放在a中,这在Laravel 4.2中是怎么回事?
$rules = array(
    'start'=>'required|date|before_or_equal:stop',
    'stop'=>'required|date',
);
 Validator::extend('before_equal', function($attribute, $value, $parameters, $validator) {
     return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
 });