2

現在の dev-develop ブランチで ZF2 の dev バージョンを使い始めました。それ以来、ビューのどこかにスローされたすべての例外で白い画面が表示されます。

SkeletonApplication をインストールして、それが私のアプリケーションの何かであるかどうかを確認しましたが、それが原因でしたが、同じ問題もそこに表示されます。dev-master にダウングレードすると問題が解決し、標準の例外ダンプが取得されます。

zf2 コードを調べると、この理由がわかったと思います。Zend\Mvc\View\Http\DefaultRenderingStrategy::render() では、次のようになります。

public function render(MvcEvent $e)
{
    ......
    try {
        $view->render($viewModel);
    } catch(\Exception $ex) {
        $application = $e->getApplication();
        $events      = $application->getEventManager();
        $e->setError(Application::ERROR_EXCEPTION)
          ->setParam('exception', $ex);
        $events->trigger(MvcEvent::EVENT_RENDER_ERROR, $e);
    }
    return $response;
}

したがって、例外はキャッチされますが、応答は空であり、後者の原因についての手がかりはありません。

ただし、別の質問が表示されます。エラーがレイアウトでトリガーされた場合、エラーハンドラーはどのように例外ページをレンダリングするのでしょうか? (私の場合のように、コンテナーを見つけることができなかったナビゲーション ヘルパーです。) 唯一の可能な解決策は、追加のエラー レイアウトを使用することですが、適切な例外処理を行う理由がもう存在しないため、これは無意味です。

したがって、次のような疑問が生じています。

  1. ZF2 開発者はどのように問題を解決する予定ですか?
  2. 現在の回避策はありますか (実際には try { } catch() { } をコメントアウトすると問題は解決しますが、適切な解決策ではありません)
  3. 上記のコードをもたらしたプルリクエストがクローズされたので、私は何か完全に間違ったことをしているのでしょうか?また、それが機能する方法について完全に間違っているのでしょうか?
4

1 に答える 1

-1

zf2 構成ファイルをチェックして、例外表示オプションが開いていることを確認します。

'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
),
于 2012-12-20T02:52:04.390 に答える