12

コントローラーにこれがあります:

if(some stuff) {
    throw $this->createNotFoundException('message');
}

開発環境でテストすると、テキストで例外が検出されたことを伝えるSymfonyのページが表示されますが、製品環境ではテストできません:(これを実行してphp app/console cache:clear --env=prod --no-debugから、URLのみをツールバーとSymfonyのエラーページにapp_dev.php置き換えapp.phpます止まる。

このファイルを作成しました - 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ですか? それとも例外から取得されますか?

したがって、一般的に私がやりたいことは、コントローラーのアクションの条件が真の場合、カスタマイズされたエラーページが製品環境に表示されるようにすることです。私はすでにそれを作成しましたか?そうでない場合は、どのように作成し、prod envで結果を確認する方法は?

4

5 に答える 5

16

私も試してみましたが、app/Resources/TwigBundle/views/Exception/error.html.twig に配置されたカスタム エラー ページは、prod 環境でのみ機能することに気付きました。

于 2012-10-01T14:34:25.590 に答える
14

私が推測するよりも遅くなったほうがいい..

テンプレートのオーバーライドについてはご存知でしょう。必要なテンプレートをオーバーライドできます。したがって、デバッグのためだけに開発エラー ページをオーバーライドする場合は、テンプレートをオーバーライドする必要があります。

exception_full.html.twig

これを行うには、次のフォルダーにそのようなファイルを作成します。

app/Resources/TwigBundle/views/Exception

これで、カスタマイズした 404 が開発モードで表示されます。

于 2013-05-31T12:37:00.033 に答える
5

ドキュメントを読むhttp://symfony.com/doc/2.0/cookbook/controller/error_pages.html

404ページとその他のエラーページのカスタマイズ

http://symfony.com/doc/2.0/cookbook/controller/error_pages.html#customizing-the-404-page-and-other-error-pages

于 2012-09-28T06:52:14.747 に答える
3

Symfony には、開発環境でエラー ページ テンプレートを表示できる新しい方法があるようです。彼らのドキュメントから引用:

開発環境にいる間、Symfony は光沢のある新しいカスタマイズされたエラー ページの代わりに大きな例外ページを表示します。では、どのように見えるかを確認してデバッグするにはどうすればよいでしょうか。

さいわい、デフォルトの ExceptionController を使用すると、開発中にエラー ページをプレビューできます。

この機能を使用するには、routing_dev.yml ファイルに次のように定義する必要があります。

# app/config/routing_dev.yml
_errors:
    resource: "@TwigBundle/Resources/config/routing/errors.xml"
    prefix:   /_error

続きを読む: Symfony エラーページマニュアル

于 2016-05-10T17:47:02.700 に答える