简体   繁体   English

如果表单验证失败,则使用自定义请求 class(laravel 5.8)通过输入重定向回来

[英]If form validation failed then redirect back with input using custom request class (laravel 5.8)

The problem is i want to return back with the inputs when the validation is fails.问题是我想在验证失败时返回输入。 Here I'm using a custom request class to validate user input.在这里,我使用自定义请求 class 来验证用户输入。

Now my question is where i place this piece of code on Controller Or in Request class .现在我的问题是我将这段代码放在ControllerRequest class的哪里。
or is there another way to do it?还是有其他方法可以做到这一点?

Here is the code i want to use: return redirect()->back()->withInput();这是我要使用的代码: return redirect()->back()->withInput();

Here is the Controller:这是 Controller:

<?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'));
    }
}

Here is the Request Class:这是请求 Class:

<?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',
        ];
    }

}

you can use a method from FormRequest class, that is failedValidation() method.您可以使用FormRequest class 中的方法,即failedValidation()方法。

and example code is like this:示例代码是这样的:

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

you must add a argument from Illuminate\Contracts\Validation\Validator class to your method failedValidation and add Illuminate\Http\RedirectResponse class for get redirect method.您必须将Illuminate\Contracts\Validation\Validator class 的参数添加到您的方法failedValidation并添加Illuminate\Http\RedirectResponse class 以获得重定向方法。

add Illuminate\Validation\ValidationException class, if not your method cant be read.添加Illuminate\Validation\ValidationException class,如果不是,您的方法无法读取。

please check this请检查这个

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 Show this error message希望在您的刀片文件中显示此错误消息

<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

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

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