Mostrar as mensagens de erro no Laravel depois de ser redireccionado do controlador

Como posso mostrar a mensagem de validação na vista que está sendo redirecionada em Laravel ?

Aqui está a minha função num controlador

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');
    }
    }
Eu sei que o código abaixo indicado é uma má tentativa, mas como posso corrigi-lo e o que sou Perdi

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

actualização: e como é que eu mostro as mensagens de erro perto dos Campos em particular

Author: Abishek Biji, 2014-11-04

4 answers

Quando a validação falhar, devolve com os erros de validação.

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

Pode detectar o erro na sua vista usando

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

Actualizar

Para mostrar o erro sob cada campo você pode fazer assim.

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

Para um melhor estilo de exibição com css.

Pode referir-se aos documentos aqui.
 35
Author: Sushant Aryal, 2017-07-31 08:09:48
@if ($errors->has('category'))
    <span class="error">{{ $errors->first('category') }}</span>
@endif
 3
Author: Nicola Lamonaca, 2015-04-08 07:06:36

Se quiser carregar a vista do mesmo controlador em que está:

if ($validator->fails()) {
    return self::index($request)->withErrors($validator->errors());
}

E se quiser mostrar rapidamente todos os erros, mas tiver um pouco mais de controlo:

 @if ($errors->any())
     @foreach ($errors->all() as $error)
         <div>{{$error}}</div>
     @endforeach
 @endif
 1
Author: Andrew, 2018-08-29 01:39:32

Move tudo isso no kernel.php se apenas o método acima não funcionou para você lembre-se que você tem que mover todas essas linhas no kernel.php além da solução acima

Deixe-me primeiro mostrar como ele está no arquivo..
protected $middleware = [

    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];
Agora o que tens de fazer é ...
protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
     \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [

    ],

    'api' => [
        'throttle:60,1',
    ],
];

I. e.;

enter image description here

 0
Author: Mayank, 2016-09-17 08:29:42