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
15
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.;
0
Author: Mayank, 2016-09-17 08:29:42