升級到Laravel 5.2後,我遇到了laravel驗證器的問題。例如,當我想驗證控制器中的數據時,請使用此代碼。Laravel驗證器拋出異常而不是重定向
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ContactController extends Controller
{
public function storeContactRequest(Request $request)
{
$this->validate($request, [
'_token' => 'required',
'firstname' => 'required|string'
'lastname' => 'required|string'
'age' => 'required|integer',
'message' => 'required|string'
]);
// Here to store the message.
}
}
但不知何故,當我進入unvalid數據不會重定向我回到以前的頁面和閃爍一些消息會話,但它會引發異常,並給了我一個500錯誤頁面回來。
這是我得到的例外。 我已經在文檔中讀過ValidationException是新的而不是HttpResponseException,但我不知道它是否與此有關。
[2016-01-05 11:49:49] production.ERROR: exception 'Illuminate\Foundation\Validation\ValidationException' with message 'The given data failed to pass validation.' in /home/vagrant/Code/twentyre-webshop/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php:70
而當我使用一個單獨的請求類時,它只會重定向回錯誤信息。在我看來,只有在控制器中使用的驗證方法受此行爲影響。
這是設計。請求類執行重定向,如果您使用ValidatesRequests trait和validate()方法手動驗證,則需要捕獲異常並自行處理。 –
但是如何在控制器中像這樣使用它時如何捕獲異常? – DB93
將它包裝在try/catch子句中 –