i've created simple contact form in laravel 5, using request object , validator object check input errors.
the form in view coded in html, rather laravel form object, isn't included default in laravel 5.
i need set form if validation rule fails, user's input flashed session doesn't disappear when page redirects. able accomplish putting $request->flash() in post controller, before validation code.
however, not want data flashed (i.e, form should reset) if validation passes , form emailed. there's no apparent way me accomplish in $this->validate block, since laravel helpfully handles redirects automatically.
how can tell laravel flash form data if there validation error?
<?php namespace app\http\controllers; use illuminate\http\request; use app\http\requests; use app\http\controllers\controller; class contactcontroller extends controller { /** * show form creating new resource. * * @return response */ public function create() { return view('contact'); } /** * store newly created resource in storage. * * @param request $request * @return response */ public function store(request $request) { // flash current input in case validator fails , redirects $request->flash(); // validate form request, redirect on fail $this->validate($request, [ 'name' => 'required', 'email' => 'required|email', 'subject' => 'required', 'message' => 'required|min:5', ]); // generate email template , send \mail::send('emails.feedback', array( 'name' => $request->get('name'), 'email' => $request->get('email'), 'user_message' => $request->get('message'), 'subject' => $request->get('subject') ), function($message) use ($request) { $message->from( \config::get('site.from_email') ); $message->to( \config::get('site.contact_email') , 'admin' ); $message->subject( \config::get('site.name').': '. $request->get('subject') ); }); // redirect contact route success message return \redirect::route('contact') ->with('message', 'thanks contacting us!'); } }
just remove following line of code:
$request->flash(); laravel take care of flashing data on failed validation. following method gets called on failed validation:
/** * create response when request fails validation. * * @param \illuminate\http\request $request * @param array $errors * @return \illuminate\http\response */ protected function buildfailedvalidationresponse(request $request, array $errors) { if ($request->ajax() || $request->wantsjson()) { return new jsonresponse($errors, 422); } return redirect()->to($this->getredirecturl()) ->withinput($request->input()) // <-- flashes inputs ->witherrors($errors, $this->errorbag()); // <-- flashes errors } this trait used in controller validating request , it's located @ illuminate/foundation/validation, name validatesrequests. check clarify yourself.
alternatively, may manually if want reason, check the documentation.
Comments
Post a Comment