Я использую laravel 5.1 и флеш-сообщения. Я хочу показать флэш-сообщение пользователю при сбое валидатора.
Мой код выглядит так:
/*
Validation
*/
$rules = array(
'username' => 'alpha_numeric_spaces|required|min:3|max:12|not_in:edit,password|unique:users,username',
'email' => 'email|unique:users,email',
'password' => 'required|min:6|confirmed',
'rules' => 'required|'
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
flash()->error($validator->messages());
return redirect()->back()->withInput();
}
Но я получаю ошибки во флеш-сообщении с плохим текстом:
{
"username": ["The username has already been taken."],
"email": ["The email has already been taken."]
}
Моя проблема: я получаю сообщения плохого формата.
«username»: [«Имя пользователя уже занято.»],
вместо
Имя пользователя уже занято.
Проблемное изображение:
ВОТ
Попробуй использовать Session::flash
в вашем контроллере:
Session::flash('error', $validator->messages());
А также Session::get()
в вашем шаблоне лезвия:
@if (Session::has('error'))
<div class="alert alert-warning" align="center">{{ Session::get('error') }}</div>
@endif
Это должно работать, но если вы все еще получаете точно такой же ошибка, попробуйте повторить:
@foreach (Session::get('error') as $er => $errorMessage )
{{ $errorMessage[0] }}
@endforeach
Других решений пока нет …