在laravel 4.2验证中允许相同的开始和结束日期

时间:2016-09-21 04:08:17

标签: php laravel laravel-4

所以我有这个功能,用户需要输入某个事件的开始日期和结束日期。所以我所做的是我在我的视图中添加了一个日期选择器,在我的控制器中,我唯一能做的就是在开始日期之后允许结束日期。但是我也应该能够允许相同的开始和结束日期说例如用户今天选择了开始日期,我应该能够允许结束日期为今天。基本上,结束日期可以在开始日期之前和之后,这是我的控制器中的验证码。

$rules = array(
        'eventName'    => 'required',
        'users'        => 'required',
        'evStart'      => 'required',
        'evEnd'        => 'required|after:evStart',
    );

这是我的视图代码

<div class="input-field col s10 offset-s1" style="margin-top:40px;">
    {{ Form::label('date', 'Event Start *') }}
    {{ Form::input('date', 'evStart', Input::old('evStart'), ['class'=>'datepicker',   'placeholder' => 'Date']) }}
</div>

<div class="input-field col s10 offset-s1">
    {{ Form::label('date', 'Event End *') }}
    {{ Form::input('date', 'evEnd', Input::old('evEnd'), ['class'=>'datepicker', 'placeholder' => 'Date']) }}
</div>

关于如何改进我的代码的任何想法?非常感谢!

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
     $( function() {


    //----------date format-----------------

    $("#startdate").datepicker({
            dateFormat: "mm/dd/yy",

            onSelect: function (date) {
                var date2 = $('#startdate').datepicker('getDate');
                date2.setDate(date2.getDate());

                $('#enddate').datepicker('option', 'minDate', date2);
            }
        });
        $('#enddate').datepicker({
            dateFormat: "mm/dd/yy",
            onClose: function () {
                var dt1 = $('#startdate').datepicker('getDate');
                console.log(dt1);
                var dt2 = $('#enddate').datepicker('getDate');
                if (dt2 <= dt1) {
                    var minDate = $('#enddate').datepicker('option', 'minDate');
                    $('#enddate').datepicker('setDate', minDate);
                }
            }
        });
  } );
</script>

答案 1 :(得分:1)

为日期制作自己的验证规则:

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

开始日期:

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

将此代码放在您想要的位置。如果要验证空字段,请使用Validator :: extendImplicit。