現在の 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;
}
したがって、例外はキャッチされますが、応答は空であり、後者の原因についての手がかりはありません。
ただし、別の質問が表示されます。エラーがレイアウトでトリガーされた場合、エラーハンドラーはどのように例外ページをレンダリングするのでしょうか? (私の場合のように、コンテナーを見つけることができなかったナビゲーション ヘルパーです。) 唯一の可能な解決策は、追加のエラー レイアウトを使用することですが、適切な例外処理を行う理由がもう存在しないため、これは無意味です。
したがって、次のような疑問が生じています。
- ZF2 開発者はどのように問題を解決する予定ですか?
- 現在の回避策はありますか (実際には try { } catch() { } をコメントアウトすると問題は解決しますが、適切な解決策ではありません)
- 上記のコードをもたらしたプルリクエストがクローズされたので、私は何か完全に間違ったことをしているのでしょうか?また、それが機能する方法について完全に間違っているのでしょうか?