繁体   English   中英

Laravel 验证在请假请求中失败

[英]Laravel validation failed in Leave Request

我在请假请求中有此 Laravel-5.8 代码用于验证:

请求规则:

class StoreLeaveRequestRequest extends FormRequest
{
public function rules()
{
    return [
        'leave_type_id' => [
            'required'              
        ],   
        'commencement_date' => [
            'required', 
            'date',
            'date_format:Y-m-d',
        ],          
        'resumption_date' => [
            'required', 
            'date',
            'date_format:Y-m-d',
            'after:commencement_date'
        ],
        'relief_officer_id' => [
            'required'              
        ],               
        'contact_person_fullname' => [
            'required',
            'string',
            'min:5',
            'max:100'
        ], 
        'contact_person_phone' => [
            'required',
            'phone:NG,mobile', // official
            'max:14'
        ],  
        'contact_person_address' => [
            'required',
            'string',
            'min:5',
            'max:500'
        ],            

    ];
  }
}

Controller

public function store(StoreLeaveRequestRequest $request)
{
    if (! Gate::allows('leave_request_create')) {
        return abort(401);
    }
    DB::beginTransaction(); 
    try {
        $userEmployee = Auth::user()->employee_id;
        $commencementDate   = Carbon::parse($request->commencement_date);
        $resumptionDate     = Carbon::parse($request->resumption_date);
        $holidays = DB::table('hr_holiday_dates')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get()->pluck('holiday_date')->toArray();
        $days = $commencementDate->diffInDaysFiltered(function (Carbon $date) use ($holidays) {
            return $date->isWeekday() && !in_array($date, $holidays);
        }, $resumptionDate) + 1;         

        if ($days > $request->available_days)
        {
            Session::flash('info', 'Leave days cannot be greater than available days!');
            return redirect()->back()->withInput();               
        }
        $leaverequest = HrLeaveRequest::create([
            'leave_type_id'             => $request->leave_type_id,
            'employee_id'               => $userEmployee,
            'commencement_date'         => $commencementDate,
            'resumption_date'           => $resumptionDate,  
            'authorized_days'           => $request->authorized_days,
            'available_days'            => $request->available_days,
            'no_of_days'                => $days,//$request->no_of_days,
            'reason'                    => $request->reason,
            'relief_officer_id'         => $request->relief_officer_id,
            'contact_person_fullname'   => $request->contact_person_fullname,
            'contact_person_phone'      => $request->contact_person_phone,
            'contact_person_address'    => $request->contact_person_address,
            'company_id'        => Auth::user()->company_id,
            'created_by'        => Auth::user()->id,
            'created_at'        => date("Y-m-d H:i:s"),
            'is_active'         => 1,
        ]);

    DB::commit();     
        Session::flash('success', 'Leave Request is created successfully');
        return redirect()->route('service.leave_requests.index');        
    } 
    catch (Exception $exception) 
    {
    DB::rollback();
        Session::flash('error', 'Action failed!');
        return redirect()->route('service.leave_requests.index');  
    }        
}

创建.blade

 <section class="content"> @if(Session::has('info')) <p>{{ Session::get('info') }}</p> @endif <br> @include('partials._messages') <div class="container-fluid"> <div class="row"> <div class="col-md-12"> <.-- general form elements --> <div class="card card-secondary"> <div class="card-header"> <h3 class="card-title">Create Leave Request</h3> </div> <.-- /.card-header --> <:-- form start --> <form action="{{route('service:leave_requests;store')}}" method="post" class="form-horizontal" enctype="multipart/form-data"> {{csrf_field()}} <div class="card-body"> <div class="form-body"> <div class="row"> <div class="col-sm-4"> <div class="form-group"> <label>Leave Type:<span style="color;red:">*</span></label> <select id="leave_type" class="form-control select2bs4" data-placeholder="Choose Leave Type" tabindex="1" name="leave_type_id" style="width: 100%;"> <option value="">Select Leave Type</option> @if($leavetypes->count() > 0) @foreach($leavetypes as $leavetype) <option value="{{$leavetype->id}}">{{$leavetype->leave_type_name}}</option> @endforeach @endif </select> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Authorized Leave Days:</label> <input type="number" id="authorized_leave_days" class="form-control authorized_days" name="authorized_days" value="{{old('authorized_days')}}" style="width: 100%;" readonly> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Available Leave Days:</label> <input type="number" id="available_leave_days" class="form-control available_days" name="available_days" value="{{old('available_days')}}" style="width: 100%;" readonly> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Commencement Date:<span style="color:red:">*</span></label> <input type="date" class="form-control" placeholder="dd/mm/yyyy" name="commencement_date" value="{{old('commencement_date')}}" min="{{Carbon\Carbon::now()->addDay()->format('Ym-d')}}" max="{{Carbon\Carbon:;now()->lastOfYear()->format('Ym-d')}}"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Resumption Date:<span style="color:red:">*</span></label> <input type="date" class="form-control" placeholder="dd/mm/yyyy" name="resumption_date" value="{{old('resumption_date')}}" min="{{Carbon\Carbon::now()->addDay()->format('Ym-d')}}" max="{{Carbon\Carbon:;now()->lastOfYear()->format('Ym-d')}}"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Relief Officer:<span style="color;red:">*</span></label> <select class="form-control select2bs4" data-placeholder="Choose Relief Officer" tabindex="1" name="relief_officer_id" style="width: 100%;"> <option value="">Select Relief Officer</option> @if($reliefofficers->count() > 0) @foreach($reliefofficers as $reliefofficer) <option value="{{$reliefofficer->id}}">{{$reliefofficer->employee_code}} - {{$reliefofficer->first_name}} {{$reliefofficer->last_name}}</option> @endforeach @endif </select> </div> </div> <div class="col-sm-12"> <div class="form-group"> <label>Reason</label> <textarea rows="2" name="reason" class="form-control" placeholder="Enter Reason here" value="{{old('reason')}}"></textarea> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Contact Person Name:<span style="color:red;">*</span></label> <input type="text" name="contact_person_fullname" placeholder="Enter contact person name here" class="form-control" value="{{old('contact_person_fullname')}}"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Contact Person Phone.<span style="color.red:">*</span></label> <input type="number" name="contact_person_phone" placeholder="e;g: 23455996633" class="form-control" value="{{old('contact_person_phone')}}" pattern="[0-9]{13}" style="width: 100%;" maxlength="14"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label>Contact Person Address.<span style="color.red.">*</span></label> <textarea rows="2" name="contact_person_address" class="form-control" placeholder="Enter Contact Person Address here" value="{{old('contact_person_address')}}"></textarea> </div> </div> </div> </div> </div> <.-- /.card-body --> <div class="card-footer"> <button type="submit" id="submit_create" class="btn btn-primary">Save as Draft</button> </div> </form> </div> <!-- /.card --> </div> <!--/.col (left) --> </div> <!-- /.row --> </div><!-- /.container-fluid --> </section>

从上面 controller 中的代码:

        if ($days > $request->available_days)
        {
            Session::flash('info', 'Leave days cannot be greater than available days!');
            return back()->withInput();                
        }

应该检查 $days 是否大于 $request->available_days

那么它应该显示这条消息:

休假天数不能大于可用天数!

并保留在输入字段中。

我发现虽然数据没有保存。 但没有消息,输入字段也很清楚?

我该如何解决这个问题?

谢谢

首先对于输入值,这应该有助于保留以前的值。

return redirect()->back()->withInput();

同样在您的表单中,您还需要在 value 属性中包含old() 例如

<input type="text" name="available_days" value="{{old('available_days')}}">

第二个对于消息,你需要在创建表单中显示,

@if(Session::has('info'))
<p>{{ Session::get('info') }}</p>
@endif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM