Reputation: 156
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.
Now my question is where i place this piece of code on Controller Or in Request class.
or is there another way to do it?
Here is the code i want to use:
return redirect()->back()->withInput();
Here is the 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:
<?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',
];
}
}
Upvotes: 3
Views: 2979
Reputation: 41
you can use a method from FormRequest class, that is failedValidation() method.
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.
add Illuminate\Validation\ValidationException class, if not your method cant be read.
Upvotes: 4
Reputation: 3702
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
Upvotes: 1