Reputation: 1022
This is my controller. I am trying to validate the form and show error messages if any. The form is validating fine but when it redirects back to the form if validation fails, then old form values are not working
<?php
namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Frontend\AbstractController as FrontendController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ContactFormController extends FrontendController
{
protected $validationRules = [
'Name' => 'required',
'email-360' => 'required|email',
'telephone' => 'required',
'Bio' => 'required',
];
public function index(Request $request)
{
$request->flash();
$viewData = [
'meta_title' => _('Contact Us'),
'meta_description' => _(''),
];
return view('frontend.contact-form', $viewData);
}
public function saveContactForm(Request $request)
{
$validationMessages = [
'Name.required' => _('This field is required.'),
'email-360.required' => _('This field is required.'),
'telephone.required' => _('This field is required.'),
'Bio.required' => _('This field is required.'),
];
$request->flash();
$validation = Validator::make($request->all(), $this->validationRules, $validationMessages);
if ($validation->fails()) {
return redirect()->back()->withInput()->withErrors($validation);
}
}
}
Here is the contact-form.blade.php where error messages are displaying errors correctly as expected but old values are not displayed
@extends('layout.front')
@section('content')
<form action="{{ action('Frontend\ContactFormController@saveContactForm',$locale) }}" method="post" class="wpcf7-form" enctype="multipart/form-data" novalidate="novalidate">
{{ csrf_field() }}
<input name="_method" type="hidden" value="POST">
<div class="entry">
<div class="label" style="vertical-align: top;">{{ _('Full Name') }}<sup>*</sup></div>
<div class="field">
<span class="wpcf7-form-control-wrap Name">
<input type="text" name="Name" value="{!! old('Name') !!}" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
<span role="alert" class="wpcf7-not-valid-tip">{{ $errors->first('Name') }}</span>
</span>
</div>
</div>
<div class="entry">
<div class="label" style="vertical-align: top;">{{ _('SA Email Address') }}<sup>*</sup></div>
<div class="field">
<span class="wpcf7-form-control-wrap email-360">
<input type="email" name="email-360" value="{{ old('email-360') }}" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" aria-invalid="false">
<span role="alert" class="wpcf7-not-valid-tip">{{ $errors->first('email-360') }}</span>
</span>
</div>
</div>
<div class="entry">
<div class="label" style="vertical-align: top;">{{ _('Phone Number') }}<sup>*</sup></div>
<div class="field">
<span class="wpcf7-form-control-wrap telephone">
<input type="text" name="telephone" value="{{ old('telephone') }}" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" placeholder="123-456-7890">
<span role="alert" class="wpcf7-not-valid-tip">{{ $errors->first('telephone') }}</span>
</span>
</div>
</div>
<div class="entry">
<div class="label" style="vertical-align: top;">{{ _('Tell Us About Yourself & Your Experiences As A Sugar Baby.') }}
<sup>*</sup></div>
<div class="field">
<span class="wpcf7-form-control-wrap Bio">
<textarea name="Bio" cols="40" rows="10" minlength="300" class="wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
{{ old('Bio') }}
</textarea>
<span role="alert" class="wpcf7-not-valid-tip">{{ $errors->first('Bio') }}</span>
</span>
<br>
{{ _('(300 Character Minimum)') }}
</div>
</div>
<div class="entry">
<div class="label">{{ _('Headshot') }}<sup>*</sup></div>
<div class="field">
<span class="wpcf7-form-control-wrap Headshot">
<input type="file" name="Headshot" size="40" class="wpcf7-form-control wpcf7-file wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
<span role="alert" class="wpcf7-not-valid-tip">{{ $errors->first('Headshot') }}</span>
</span>
</div>
</div>
<div class="entry">
<div class="label"></div>
<div class="field"><input type="submit" value="Send" class="wpcf7-form-control wpcf7-submit"></div>
</div>
</form>
@endsection
How to resolve the mistake?
Upvotes: 0
Views: 8807
Reputation: 83
Posting this for anyone who's still looking.
In your controller, redirect with all the inputs like this:
return redirect()->back()->withInput($request->all());
And in your blade file make it like this:
<input type="text" class="form-control" name="identifier" id="identifier" value="{{ old('identifier') ?? '' }}">
Similarly for other kind of input elements, you can refer this link
Upvotes: 0
Reputation: 34914
Use back()
instead redirect()->back()
as
return back()->withInput()->withErrors($validation);
Upvotes: 0
Reputation: 32354
Add the inputs to your redirect:
return redirect()->back()->withInput($request->all())->withErrors($validation);
Upvotes: 1