Symfony の twig エラー ページを完全に無効にしたいと考えています。ここで説明されているようにカスタマイズしたくありません: http://symfony.com/doc/2.0/cookbook/controller/error_pages.htmlではなく、単純に twig の例外処理メカニズムを取り外して、古き良き php エラーで終わります。
それはまったく可能ですか?
Symfony の twig エラー ページを完全に無効にしたいと考えています。ここで説明されているようにカスタマイズしたくありません: http://symfony.com/doc/2.0/cookbook/controller/error_pages.htmlではなく、単純に twig の例外処理メカニズムを取り外して、古き良き php エラーで終わります。
それはまったく可能ですか?
小枝のエラーページを無効にするには、次のようなものを追加するだけです
services:
twig.exception_listener:
class: DateTime #or another dummy class
app/config.yml に
この後、Symfony\Component\HttpKernel\Debug\ExceptionHandler によって生成された非常に単純な画面が表示されます。この動作を削除したい場合は、このクラスを置き換えるか、単に set_exception_handler 呼び出しをコメント化してください。
public static function register($debug = true)
{
$handler = new static($debug);
set_exception_handler(array($handler, 'handle'));
return $handler;
}
Symfony 3.x では、次のように実行できます。
services.ymlに、リスナーのオーバーライドを追加します (@Ziumin の回答のように):
services:
twig.exception_listener:
class: stdObject
app_dev.phpで、 の行をコメント アウトします。これDebug::enable();
により、簡略化されたエラー処理ページも無効になります (フレームワークからファイルを変更する必要はありません)。
その後、独自の例外ハンドラを追加できます。
// Disable error handling page:
// Debug::enable();
set_exception_handler(function($e) {
$msg = array();
$msg[] = 'Exception: ' . $e->getMessage() . ' at ' . $e->getFile() . ':' . $e->getLine();
$msg[] = '';
$msg[] = $e->getTraceAsString();
echo implode("\n", $msg);
});