symfony2を使っていて、自作したExceptionクラスを投げ、それをExceptionListenerで受け取ってjsonで返却しようとしたところsymfony2のエラー画面が表示されてしまった。
jsonで返却するために以下のようにコードを記述。
エンコード形式をおまかせする場合はこんな感じ。
<?php // エンコード形式はおまかせ public function onKernelException(GetResponseForExceptionEvent $event) { $responseJson['message'] = 'hoge'; return new JsonResponse($responseJson); }
でも、今回は指定したエンコード形式で返却したかった。
ちょっと調べたら、そういう場合はJsonResponseじゃなくてResponseを使うみたい。
<?php // json_encodeを指定して返却 public function onKernelException(GetResponseForExceptionEvent $event) { $responseJson['message'] = 'hoge'; // エンコード $responseJson = json_encode($responseJson, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); $response = new Response($responseJson, 200, array('Content-Type' => 'application/json')); $event->setResponse($response); }
無事、指定したエンコード形式でjsonを返却することができました。