Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying the Error Messages in Laravel after being Redirected from controller

How can I display the validation message in the view that is being redirected in Laravel ?

Here is my function in a Controller

public function registeruser() {     $firstname = Input::get('firstname');     $lastname = Input::get('lastname');     $data  =  Input::except(array('_token')) ;     $rule  =  array(                 'firstname'       => 'required',                 'lastname'         => 'required',                    ) ;     $validator = Validator::make($data,$rule);     if ($validator->fails())     {     $messages = $validator->messages();     return Redirect::to('/')->with('message', 'Register Failed');     }     else     {     DB::insert('insert into user (firstname, lastname) values (?, ?)',                                 array($firstname, $lastname));     return Redirect::to('/')->with('message', 'Register Success');     }     } 

I know the below given code is a bad try, But how can I fix it and what am I missing

@if($errors->has())     @foreach ($errors->all() as $error)         <div>{{ $error }}</div>     @endforeach @endif 

Update : And how do I display the error messages near to the particular fields

like image 445
SA__ Avatar asked Nov 04 '14 10:11

SA__


People also ask

How do I show error messages in laravel?

The @error directive has the $message variable to display the error message. You can use this method to display error messages along with their attributes in the view file.


1 Answers

Laravel 4

When the validation fails return back with the validation errors.

if($validator->fails()) {     return Redirect::back()->withErrors($validator); } 

You can catch the error on your view using

@if($errors->any())     {{ implode('', $errors->all('<div>:message</div>')) }} @endif 

UPDATE

To display error under each field you can do like this.

<input type="text" name="firstname"> @if($errors->has('firstname'))     <div class="error">{{ $errors->first('firstname') }}</div> @endif 

For better display style with css.

You can refer to the docs here.

UPDATE 2

To display all errors at once

@if($errors->any())     {!! implode('', $errors->all('<div>:message</div>')) !!} @endif 

To display error under each field.

@error('firstname')     <div class="error">{{ $message }}</div> @enderror 
like image 150
Sushant Aryal Avatar answered Sep 24 '22 19:09

Sushant Aryal