2015-10-19 23 views
2

在Laravel驗證失敗時,請求將被重定向到驗證爲$errros的視圖。我需要在控制器中訪問此消息。訪問它們的正確方法是什麼?我的用戶Request類的驗證,所以我不能用:可作爲$validator->messages()如何在發送視圖之前訪問驗證錯誤消息?

$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 = Validator::make(...); 
$messages = $validator->messages(); 
+0

謝謝,請參閱最新的問題。 – PHPst

+0

我認爲@ JosephSilber的答案是最接近你會得到,然後。 – 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();