Rajat Jain
Rajat Jain

Reputation: 1022

Get old input via old() in laravel 5.5 not working

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 &amp; 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

Answers (3)

Anurag
Anurag

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

Niklesh Raut
Niklesh Raut

Reputation: 34914

Use back() instead redirect()->back() as

return back()->withInput()->withErrors($validation);

Upvotes: 0

madalinivascu
madalinivascu

Reputation: 32354

Add the inputs to your redirect:

return redirect()->back()->withInput($request->all())->withErrors($validation);

Upvotes: 1

Related Questions