カスタムエラー処理を行う必要があります。私たちは自分自身でsymfonyのカスタムアクションを実行しました。ただし、このアクション自体が例外を発生させる可能性があるので注意してください。そのことを考慮する必要があります。
次のような場合があります。最初のイベントのリスナーを追加し、良い場所はProjectConfiguration.class.phpファイルのようになります。
$this->dispatcher->connect('application.throw_exception', array('MyClass', 'handleException'));
イベントハンドラを使用してあなただけのメールにしたい場合は、例えば、例外でやりたいことには十分かもしれません管理者へのスタックトレース。私たちはフィードバックフォームを表示して処理するカスタムアクションに移りたいと思っていました。あなたは今、何でも行うことができますアクション自体では
all:
.actions:
error_500_module: error
error_500_action: error500
settings.ymlの
にあなたは今例外上に転送するモジュールとアクションを設定することができ
class MyClass {
public static function handleException(sfEvent $event) {
$moduleName = sfConfig::get('sf_error_500_module', 'error');
$actionName = sfConfig::get('sf_error_500_action', 'error500');
sfContext::getInstance()->getRequest()->addRequestParameters(array('exception' => $event->getSubject()));
$event->setReturnValue(true);
sfContext::getInstance()->getController()->forward($moduleName, $actionName);
}
}
:私たちのイベントハンドラは、このような何かを見て例外で欲しい、例えば。フィードバックフォームを表示して管理者に連絡してください。 $ request-> getParameter( 'exception')を使用して例外自体を取得することができます
+1ありがとうございました!私たちのシステムはテーマをサポートしており、これがなければエラー500ページのテーマをサポートすることはできませんでした。とても有難い。 – flu
あなたの答えをありがとう!あなたのカスタム関数を 'application.throw_exception' *に接続すると、そのイベントのsymfonyのデフォルトの動作が上書きされますか?はいの場合は、カスタム関数の中で 'self :: parent()'を呼び出すことでそれを防ぐことができますか?私はちょうどいくつかの機能を追加したいと思っています。 – Tapper
@Tapperあなたは戻り値を変更することでそれを達成できるはずです。代わりに$ event-> setReturnValue(false)を試してください – Gerry