私は私のコントローラーにこれを持っています:
if(some stuff) {
throw $this->createNotFoundException('message');
}
Dev envでテストすると、テキストで例外が検出されたことを示すSymfonyのページが表示されますが、prod envではテストできません:(これをphp app/console cache:clear --env=prod --no-debug
で実行し、URLapp_dev.php
をapp.php
に置き換えますがツールバーとSymfonyのエラーページは残ります。
このファイルを作成しました--app/Resources/TwigBundle/views/Exception/error.html.twig
。それで、それは製品でレンダリングされますか?
これはその中にあります:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>An Error Occurred: {{ status_text }}</title>
</head>
<body>
<h1>Oops! An Error Occurred</h1>
<h2>The server returned a "{{ status_code }} {{ status_text }}".</h2>
</body>
</html>
status_code
とstatus _text
の値はどこに指定すればよいですか?それとも例外から取られていますか?
したがって、一般的に私がやりたいのは、コントローラーのアクションの条件が真の場合、カスタマイズされたエラーページをprodenvに表示することです。私はすでにそれを作りましたか、そうでなければ、それを作る方法とprod envで結果を見る方法は?
また、試してみたところ、app/Resources/TwigBundle/views/Exception /error.html.twigに配置されたカスタムエラーページが本番環境でのみ機能することに気付きました。
決して遅くなるよりはましだと思います。
テンプレートのオーバーライドについてはおそらくご存知でしょう。必要なテンプレートを上書きできます。したがって、デバッグのためだけに開発エラーページをオーバーライドする場合は、テンプレートをオーバーライドする必要があります。
exception_full.html.twig
このフォルダに次のようなファイルを作成することで、これを行うことができます。
app/Resources/TwigBundle/views/Exception
これで、カスタマイズされた404が開発モードで表示されます。
検出されたテキストには、次の方法でアクセスできます。
{{ exception.message }}
Symfonyには、開発環境でエラーページテンプレートを表示できる新しい方法があるようです。彼らのドキュメントからの引用:
開発環境にいる間、Symfonyは光沢のある新しいカスタマイズされたエラーページの代わりに大きな例外ページを表示します。では、どのように見えるかを確認してデバッグするにはどうすればよいでしょうか。
幸い、デフォルトのExceptionControllerを使用すると、開発中にエラーページをプレビューできます。
この機能を使用するには、routing_dev.ymlファイルに次のような定義が必要です。
# app/config/routing_dev.yml
_errors:
resource: "@TwigBundle/Resources/config/routing/errors.xml"
prefix: /_error
続きを読む: Symfonyエラーページマニュアル