【问题标题】:If form validation failed then redirect back with input using custom request class (laravel 5.8)如果表单验证失败,则使用自定义请求类(laravel 5.8)通过输入重定向回来
【发布时间】:2019-09-22 04:33:27
【问题描述】:

问题是我想在验证失败时返回输入。在这里,我使用自定义请求类来验证用户输入。

现在我的问题是我将这段代码放在 ControllerRequest 类 中的什么位置。
或者有其他方法吗?

这是我要使用的代码: return redirect()->back()->withInput();

这是控制器:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Requests\Admin\counter\CreateCounterRequest;
use App\Models\Admin\Counter;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class CounterController extends Controller
{
    public function store(CreateCounterRequest $request)
    {
        Counter::create([
            'title' => $request->title,
            'ion_icon' => $request->ion_icon,
            'counter_value' => $request->counter_value,
        ]);
        session()->flash('success', 'Counters created successfully.');
        return redirect(route('counter.index'));
    }
}

这是请求类:

<?php

namespace App\Http\Requests\Admin\counter;

use Illuminate\Foundation\Http\FormRequest;

class CreateCounterRequest extends FormRequest
{
    public function rules()
    {
        return [
            'ion_icon' => 'required',
            'title' => 'required',
            'counter_value' => 'required|numeric',
        ];
    }

}

【问题讨论】:

  • 您可以在刀片中的字段值中使用{{old('field_name')}},例如&lt;input type="text" name="field_name" value="{{old('field_name')}}"&gt;
  • @Reza Sh 感谢您的帮助。但是如果我想使用具有相同视图的创建和更新页面,那么我该如何实现呢?因为我已经使用此视图进行更新。 &lt;input type="text" class="form-control" id="ion-icon" placeholder="ion-ios-people" name="ion_icon" value="{{ isset($counter) ? $counter-&gt;ion_icon : '' }}"&gt;

标签: php laravel forms laravel-5.8


【解决方案1】:

您可以使用 FormRequest 类中的方法,即 failedValidation() 方法。

示例代码如下:

protected function failedValidation(Validator $validator)
{
    return back()->withErrors($validator)->withInput();
}

您必须将 Illuminate\Contracts\Validation\Validator 类的参数添加到您的方法 failedValidation 并添加 Illuminate\Http\RedirectResponse 类获取重定向方法。

添加 Illuminate\Validation\ValidationException 类,否则无法读取您的方法。

【讨论】:

    【解决方案2】:

    请检查一下

    use Illuminate\Support\Facades\Validator;
    protected function validator(array $data)
        {
            return Validator::make($data, [
                'ion_icon' => 'required',
                'title' => 'required',
                'counter_value' => 'required',
            ]);
        }
    public function store(Request $request)
        {
    
            $validator = $this->validator($request->all());
    
            if ($validator->fails()) {
                return redirect()->route('your_route')->withInput(['title' => $request->title, 'icon_icon' => $request->icon_icon,'counter_value' => $request->couter_value,'phone_number'=>$request->phone_number])->withErrors($validator, 'your_desire_name');
            }
            Counter::create([
                'title' => $request->title,
                'ion_icon' => $request->ion_icon,
                'counter_value' => $request->counter_value,
            ]);
            session()->flash('success', 'Counters created successfully.');
            return redirect(route('counter.index'));
        }
    

    Want In Your Blade File 显示此错误信息

    <div >
    
                                    <input type="text" name="title" class="form-control"
                                           value="{{old('title')}}" required>
    
    
                                </div>
                                @if ($errors->your_desire_name->has('title'))
    
    
                                    <span class="messages"><p
                                            class="text-danger error">{{ $errors->your_desire_name->first('title') }}</p></span>
    
    
    
                                @endif
    

    【讨论】:

      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 2019-10-19
      • 2017-08-17
      • 2017-12-06
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2020-03-11
      相关资源
      最近更新 更多