После того, как я обновился до 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.
}
}
Но как-то, когда я вхожу недействительно данные, которые он не перенаправляет меня обратно на предыдущую страницу и мигает несколько сообщений на сессию, но это вызовет исключение, и дает мне страницу 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 и validate(), вам нужно поймать исключение и обработать его самостоятельно. –
Но как я могу поймать исключение, когда я использую его как это в контроллере? – DB93
Оберните его в предложение try/catch –