Отображение сообщений об ошибках в Laravel после перенаправления с контроллера
Как отобразить сообщение проверки в представлении, которое перенаправляется в Laravel?
Вот моя функция в контроллере
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');
}
}
Я знаю, что приведенный ниже код - это плохая попытка, но как я могу это исправить и чего не хватает
@if($errors->has())
@foreach ($errors->all() as $error)
<div>{{ $error }}</div>
@endforeach
@endif
Обновление. И как мне отображать сообщения об ошибках рядом с определенными полями?
Ответы
Ответ 1
Когда валидация не вернется с ошибками проверки.
if($validator->fails()) {
return Redirect::back()->withErrors($validator);
}
Вы можете поймать ошибку в своем представлении, используя
@if ($errors->any())
{{ implode('', $errors->all('<div>:message</div>')) }}
@endif
ОБНОВИТЬ
Чтобы отобразить ошибку в каждом поле, вы можете сделать это.
<input type="text" name="firstname">
@if ($errors->has('firstname'))
<div class="error">{{ $errors->first('firstname') }}</div>
@endif
Для лучшего стиля отображения с помощью css.
Вы можете обратиться к документам здесь.
Ответ 2
Если вы хотите загрузить представление с того же контроллера, на котором вы находитесь:
if ($validator->fails()) {
return self::index($request)->withErrors($validator->errors());
}
И если вы хотите быстро отобразить все ошибки, но иметь немного больше контроля:
@if ($errors->any())
@foreach ($errors->all() as $error)
<div>{{$error}}</div>
@endforeach
@endif
Ответ 3
@if ($errors->has('category'))
<span class="error">{{ $errors->first('category') }}</span>
@endif
Ответ 4
Переместите все это в kernel.php, если только выше описанный метод не работает, вы помните, что вам нужно переместить все эти строки в kernel.php в дополнение к вышеуказанному решению
позвольте мне сначала показать, как он находится в файле уже..
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];
/**
* The application 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',
],
];
теперь вам нужно сделать
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 route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
],
'api' => [
'throttle:60,1',
],
];
то есть;
Ответ 5
{!! Form::text('firstname', null !!}
@if($errors->has('firstname'))
{{ $errors->first('firstname') }}
@endif