【问题标题】:Laravel Insert Record after field ValidationLaravel 在字段验证后插入记录
【发布时间】:2020-05-02 23:25:50
【问题描述】:

我正在尝试 Laravel 5.6 请求验证。我遇到了几个问题

1.无法查看视图中的验证消息。

2.添加验证码数据后不插入数据库。(添加验证之前)

3 如何验证下拉状态?(应选择 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');
}

请帮我解决这个问题!

【问题讨论】:

  • 可以告诉我错误吗?
  • designation != designation_type。如果您使用的是$request-&gt;input('designation'),那么显然您无法验证'designation_type' =&gt; ['required','max:255'],,因为密钥不匹配。
  • 将验证更改为 $validatedData = $request->validate([ 'designation' => ['required','max:255'], 'status' => ['required'], ], [ 'designation.required' => '需要指定', 'designation.max' => '指定不应超过 255 个字符。', ]);
  • "无法查看视图中的验证消息" 您没有合适的代码来显示验证错误。 laravel.com/docs/5.6/validation#named-error-bags
  • 此处无需使用$data$validatedData 将保存所有经过验证的数据。

标签: php laravel validation laravel-5.6


【解决方案1】:

参考此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');
}

谢谢你们花费宝贵的时间来帮助我......!!!

【讨论】:

    【解决方案2】:
         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>
    

    【讨论】:

      【解决方案3】:

      试试下面的代码

      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>
      

      【讨论】:

      • 感谢您的评论。但没有任何反应。请勿显示错误消息或将数据插入数据库
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2017-01-24
      • 2015-02-02
      • 2020-04-20
      相关资源
      最近更新 更多