2016-03-07 6 views
2

Я использую laravel 5.1 и сообщения со вспышкой. Я хочу показать флеш-сообщение пользователю, когда валидатор терпит неудачу.Неудачные сообщения Laravel

Моего код выглядит следующим образом:

/* 
    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."] 
} 

Моей проблема: Я получаю плохие сообщения формата.

"имя пользователя": [ "Имя пользователя, уже принято"],

вместо

Имя пользователя, уже принято.

Проблема Изображение: HERE

+0

Вам необходимо использовать foreach в своем лезвии. – aldrin27

+0

@ Tommy, если бы мой ответ был полезен, пожалуйста, воздержитесь от него и выберите лучший ответ, чтобы поблагодарить меня за мое время. –

ответ

1

Попробуйте использовать 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 

Это должно работать, но если вы все еще получите точно такой же ошибка, попробуйте ite :

@foreach (Session::get('error') as $er => $errorMessage) 
    {{ $errorMessage[0] }} 
@endforeach 
+1

Спасибо за ответ. Проблема в том, что я получаю сообщения с неправильным форматированием "" username ": [« Имя пользователя уже выполнено ».], Вместо« Имя пользователя уже выполнено ». – Tommy

+0

Если вы получаете тот же объект, что и в своем посте, добавленный код должен работать. Попробуйте мой код и скажите, работает ли он или нет. –

+1

Вы не можете получить такое же сообщение, если используете 'Session ::' в контроллере и '@ foreach' код в представлении. Вы увидите другую ошибку (из-за неправильной логики итерации), или она будет работать, но вы никогда не получите '{" username ": [« Имя пользователя уже выполнено ».],« Email »: [ «Письмо уже сделано.»]} ' –