2015-10-19 5 views
2

В Laravel при завершении проверки запрос перенаправляется на представление с подтверждением $errros. Мне нужно получить доступ к этому сообщению в контроллере. Каков правильный метод доступа к ним? Я пользователь Request класс валидации, так что я не могу использовать:Как сообщения об ошибках доступа перед отправкой?

$validator = Validator::make(...); 
$messages = $validator->messages(); 

ответ

1

Предполагая, что вы использовали withErrors при перенаправлении, вы можете получить сообщение об ошибке мешок самостоятельно непосредственно из сессии:

$errors = session('errors'); 

После того, как у вас есть сообщение об ошибке мешок, вы можете получить сообщения с $errors->getMessages() или, чтобы получить плоский массив, $errors->all().

+0

Спасибо, используя это, я могу достичь массива ошибок с помощью 'session ('errors') -> getBags() ['default'] -> toArray()'. Думаю, должен быть лучший способ. Не так ли? – PHPst

+0

Мне просто нужен массив ошибок проверки формы. – PHPst

+0

@PHPst - Если вам нужен плоский массив: 'session ('errors') -> all()'. Если вы хотите, чтобы сообщения находились в исходном формате: 'session ('errors') -> getMessages()' –

0

сообщения валидатора доступны как $validator->messages().

$validator = Validator::make(...); 
$messages = $validator->messages(); 
+0

Спасибо, пожалуйста, ознакомьтесь с обновленным вопросом. – PHPst

+0

Я думаю, что ответ Джозефа Сильбера ближе всего к тебе. – ceejayoz

0

Если вы хотите отправить обратно сообщений для просмотра на странице, а затем отправить его обратно с переадресацией:

$validator = Validator::make(Input::all(), $rules); 
if ($validator->fails()) { 
    Session::put('failure_message', 'Failure!'); 
    return Redirect::to('whateverpage')->withErrors($validator)->withInput(Input::all()); 

если вы хотите увидеть, что было сгенерировано сообщение, необходимо сначала создать несколько сообщений ключ офф:

$messages = array(
    'same' => 'Your passwords don\'t match.', 
    'required' => 'The field ":attribute" is required', 
    'alpha' => 'The field ":attribute" can only contain letters', 
    'min'  => 'The field ":attribute" must be ":min" characters or greater.', 
); 
$validator = Validator::make(Input::all(), $rules, $messages); 
$messages = $validator->messages(); 
Смежные вопросы