Laravel 字段验证后插入记录

Laravel Insert Record after field Validation

我正在尝试 Laravel 5.6 请求 validation.I 面临几个问题

1.Cannot 查看验证消息。

2.After 添加验证码数据未插入数据库。(在添加验证之前有效)

3 如何验证下拉状态?(应该 select Active/Inactive)

designation.blade.php

<form action="{{url('./designation/store')}}" method="POST">
      <div class="form-row">
        <div class="form-group col-md-7">
          <label for="inputDesignation">Designation</label>
          <input type="text" name="designation" class="form-control" id="inputDesignation">
        </div>
        <div class="form-group col-md-5">
          <label for="inputStatus_Designation">Status</label>
          <select name="status" id="inputStatus_Designation" class="form-control">
            <option selected>Select Status</option>
            <option >Active</option>
            <option >Inactive</option>
          </select>
        </div>
      </div>

      <button type="submit" class="btn btn-success" id="btn_add_designation">Add</button>
      {{ csrf_field() }}
  </form>

DesignationController.php

public function store(Request $request)
{
    //Validation the Data

    $validatedData = $request->validate([
        'designation_type' => ['required','max:255'],
        'status' => ['required'],
    ],
    [
        'designation_type.required' => 'Designation is required',
        'designation_type.max' => 'Designation should not be greater than 255 characters.',
    ]);

    //Data Insert into database
   $data =[
       'designation_type'=>$request->input('designation'),
       'status'=>$request->input('status')
   ];
   DB::table('designation')->insert($data);

   return redirect('/designation');
}

请帮我解决这个问题!!

尝试以下代码

public function store(Request $request)
{
    //Validation the Data

    $validatedData = $request->validate([
        'designation_type' => ['required','max:255'],
        'status' => ['required'],
    ],
    [
        'designation_type.required' => 'Designation is required',
        'designation_type.max' => 'Designation should not be greater than 255 characters.',
    ]);


    if($validatedData->fails()) {
      return Redirect::back()->withErrors($validatedData);
    }


    //Data Insert into database
   $data =[
       'designation_type'=>$request->input('designation'),
       'status'=>$request->input('status')
   ];
   DB::table('designation')->insert($data);

   return redirect('/designation');
}




<form action="{{url('./designation/store')}}" method="POST">
      <div class="form-row">
        <div class="form-group col-md-7">
          <label for="inputDesignation">Designation</label>
          <input type="text" name="designation" class="form-control" id="inputDesignation">
          @if($errors->has('designation'))
            <div class="error">{{ $errors->first('designation') }}</div>
        @endif
        </div>
        <div class="form-group col-md-5">
          <label for="inputStatus_Designation">Status</label>
          <select name="status" id="inputStatus_Designation" class="form-control">
            <option selected>Select Status</option>
            <option >Active</option>
            <option >Inactive</option>
          </select>
          @if($errors->has('status'))
            <div class="error">{{ $errors->first('status') }}</div>
        @endif
        </div>
      </div>

      <button type="submit" class="btn btn-success" id="btn_add_designation">Add</button>
      {{ csrf_field() }}
  </form>
     public function store(Request $request)
        {
            $this->validate($request,[
                'name' => 'required'
            ]);

            $category = new Category();
            $category->name = $request->name;
            $category->slug = str_slug($request->name);
            $category->save();
            Toastr::success('Category Successfully Saved','Success');
            return redirect()->route('admin.category.index');
        }


// blade 

<form method="POST" action="{{ route('admin.category.store') }}">
   @csrf
   <div class="form-group form-float">
     <div class="form-line">
     <input value="{{ old('name') }}" name="name" type="text" id="category_name" class="form-control">
     <label class="form-label">{{ __('Name') }}</label>
       </div>
        </div>
          <br>

         <a href="{{ route('admin.category.index') }}"  class="btn btn-danger m-t-15 waves-effect">{{ __('BACK') }}</a>
          <button type="submit" class="btn btn-primary m-t-15 waves-effect">{{ __('SUBMIT') }}</button>
</form>

参考这个 https://laravel.com/docs/5.6/validation#named-error-bags 我对代码做了一些改动,这有助于解决错误。

designation.blade.php中添加

 @if ($errors->any())
<div class="alert alert-danger">
    <ul>
        @foreach ($errors->all() as $error)
            <h6>{{ $error }}</h6>
        @endforeach
    </ul>
</div>
@endif

DesignationController.php

用于状态下拉验证。

'status' => 'required|not_in:0',

用于数据插入数据库部分

DB::table('designation')->insert($validatedData);

完整代码

designation.blade.php

<div class="row">
  <div class="col-md-2"></div>
    <div class="col-md-8">
      @if ($errors->any())
        <div class="alert alert-danger">
        <ul>
        @foreach ($errors->all() as $error)
            <h6>{{ $error }}</h6>
        @endforeach
    </ul>
</div>
@endif
</div>
 <div class="col-md-2"></div>
 </div>
 <div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
  <form action="{{url('./designation/store')}}" method="POST">
      <div class="form-row">
        <div class="form-group col-md-7">
          <label for="inputDesignation">Designation</label>
          <input type="text" name="designation_type" class="form-control" id="inputDesignation">
        </div>
        <div class="form-group col-md-5">
          <label for="inputStatus_Designation">Status</label>
          <select name="status" id="inputStatus_Designation" class="form-control">
            <option selected value="">Select Status</option>
            <option value="Active">Active</option>
            <option value="Inactive">Inactive</option>
          </select>
        </div>
      </div>
      {{-- <button type="submit" class="btn btn-primary">Sign in</button> --}}
      <button type="submit" class="btn btn-success" id="btn_add_designation">Add</button>
      {{ csrf_field() }}


  </form>
</div>
 <div class="col-md-4"></div>
</div>

DesignationController.php

public function store(Request $request)
{
    $validatedData = $request->validate([
        'designation_type' => 'required|max:255',
        'status' => 'required|not_in:0',
    ],
    [
        'designation_type.required' => 'Designation is required !!',
        'designation_type.max' => 'Designation should not be greater than 255 characters.',
        'status.required' => 'Status is required !!'
    ]);

    DB::table('designation')->insert($validatedData);
    return redirect('/designation');
}

谢谢大家花宝贵的时间来帮助我....!!!