2012-04-09 4 views
2

私の英語と翻訳者には申し訳ありません。すべてのエラーをカスタマイズするsymfony 1.4

ここで説明したように、彼らが望むなら、多分あなたは私を助けることができ、私はここに新たなんだと私は私が欲しいもので失わ少しだ:

私は製造することができるすべてのエラーをカスタマイズしたいです(404、500、204、301 ....などの間違いのステータスコード)また、エラーが発生した場所の「モジュール」および/または「アクション」に基づいて提案を表示します。

また、私は、ファイルのリダイレクト「setting.yml」アプリケーションでこのような何か言うことがしたい:「action.classの「モジュール/共通/アプリ/フロントエンド」内

error_404_module: common 
error_404_action: errors 
error_500_module: common 
error_500_action: errors 
error_204_module: common 
error_204_action: errors 
error_301_module: common 
error_301_action: errors 
........ 

を。 php "は"発生したステータスコードとエラーが発生したモジュール、または "app/frontend/modules/common/templates/_errorXXXSuccess.php"を部分的に表示しているモジュールを受信する "executeErrors"を定義し、エラーが発生したモジュール「referer」を探し出して抽出するという提案。私は途中で私を置くことができる読ん

まあ、それはさまざまな状況でのエラーの異なる種類のアイデア、動的なコンテンツだと残りのタイプコード404ではなくて完璧に働いて...

このイベントは "config/error.html.php"と "config/exception.html.php"というファイルを作成しています。実際に私がこのような500のエラーを生成し、手動でこれらのファイルが実行された場合。問題は、そこからsymfonyの変数にアクセスできないことです。もしそうなら、私は "共通/エラー"を呼び出すことができ、悪い状態のコードと発生したモジュールをパラメータとして送信することができますが、そうではありません。そこから、私は$ _SERVERとrouting.ymlを使って遊んでいますが、環境がDevelopment Production(/frontend_dev.php)と混ざり合っていて、良い結果を得ることができず、避けたいものです。

つまり、 "setting.yml"のように "error_404_module"と "error_404_action"は異なるエラーコードで取得したいと考えています。したがって、エラーが実稼働環境からリリースされた場合や、開発モード(/frontend_dev.php/)である場合は、「エラーまたは例外」および/または「モジュールまたはアクション」に基づいて私のカスタムページをプロダクションで表示できます。 ..)、symfony Dispatchを表示します。

確かに人生は複雑で、私が欲しいことをするための簡単な方法がありますが、何千もの組み合わせが正しい結果を得られていないことがあります。 symfonyが "setting.yml"からの他のタイプのエラーリダイレクトを許可しない場合でも、それらが彼または何かのために予約されているためです。分かりません。

少なくとも私たちは何かをしたいと思っている人には公開していません。

多くの感謝と挨拶!

答えて

0

まず、symfonyにすべてのエラーを傍受させることはできません。いくつかのエラーはサーバーエラーであり、要求はアプリケーションに到達しません。 symfonyで応答を明示的に設定するものの一部を再現することはできますが、それらのすべてを処理する必要はないかもしれません。

正確な応答については、リスナーを使用して、必要に応じてエラーを処理するクラスにエラーをフックする必要があります。実装の詳細については、https://stackoverflow.com/a/7077818/580167を参照してください。

+0

こんにちは、私は助けを必要とする記事をリンクしていますが、わかりません。どこで "クラス"を定義しますか? 「X」ルートで新しいファイルを作成するか、別のファイルに追加する必要がありますか? また、この記事では、「/ config/ProjectConfiguration.class.php」の「$ this-> dispatcher-> connect ....」を呼び出す必要があるとも言われています。私はそれが公共の機能 "セットアップ"内にあると思いますか? "/frontend/config/frontendConfiguration.class.php"からもそれを実行できますか? 申し訳ありませんが、私はSymfonyをかなり新しくしています...ごめんなさい、ありがとう! – Z3R0N3

関連する問題