2013-12-06 2 views
0

Я пытаюсь настроить ошибку MethodNotAllowedHttpException, но я никуда не денусь.Laravel - Не удается обработать MethodNotAllowedHttpException

#app/start/global.php 

App::error(function(MethodNotAllowedHttpException $exception) 
{ 
    Response::make("Test...", 503); 
}); 

Это просто показывает пустую/пустую страницу.

Однако, если я заменяю MethodNotAllowedHttpExceptionException, он работает. Но это проявляется во многих ошибках, и я хочу только для этого типа.

Мысли?

+9

Вы забыли выражение 'use Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException'? – Touki

+0

Что сказал Туки, следует исправить вашу проблему. Не забудьте использовать правильные пространства имен во всем приложении. – Pat

+0

Doh! Спасибо! Так очевидно, правильно ... Использование этого полностью решает проблему ... :) – user2840318

ответ

1

В Laravel 5, исключения должны быть обработаны в приложение/Исключения/handler.php так:

/** 
* Render an exception into an HTTP response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Exception $e 
* @return \Illuminate\Http\Response 
*/ 
public function render($request, Exception $e) 
{ 
    if ($e instanceof ModelNotFoundException) { 
     $e = new NotFoundHttpException($e->getMessage(), $e); 
    } 

    if ($e instanceof \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException) { 
     return abort('503'); 
    } 

    return parent::render($request, $e); 
} 

Однако, я бы не использовать 503 для этих типов ошибок, поскольку это не соответствует спецификация HTTP. 405 будет более подходящим, если метод не разрешен для этого пути.

Затем вы можете создать представление в ресурсах/views/errors/405.blade.php, чтобы отобразить что-то приятное для пользователя.

Смежные вопросы