Laravel 5+でMethodNotAllowedHttpException
をどこでキャッチできますか?
Laravel 4ではstart/global.php
でこれを行うことができました。
// Exceptions/Handler.php
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
public function render($request, \Exception $e)
{
if ($e instanceof MethodNotAllowedHttpException) {
// …
}
return parent::render($request, $e);
}
Laravel 5.4
、私はこのようにしました:
ファイルの場所:app/Exceptions/Handler.php
ファイルの先頭に次のコードを追加します。
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
そして、以下のようにメソッドコードを変更します。
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof MethodNotAllowedHttpException)
{
return response()->json( [
'success' => 0,
'message' => 'Method is not allowed for the requested route',
], 405 );
}
return parent::render($request, $exception);
}
以下を含めることを忘れないでください:
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
この方法を使用すると、laravelのすべてのバージョンで機能します
if ($exception instanceof MethodNotAllowedHttpException)
{
return redirect()->route('yourWishedRoute');
}