zf2モジュールでエラー/例外ページを表示しているときにレイアウトを無効にしようとしています
しかし、何も機能しません
助けてください
zf2モジュールでエラー/例外ページを表示しているときにレイアウトを無効にしようとしています
しかし、何も機能しません
助けてください
Module.phpの最終的な解決策
$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) {
$result = $e->getResult();
$result->setTerminal(TRUE);
});
それは動作し、レイアウトファイルではなくエラー/404ビューファイルのみをロードします
ありがとうアンドリュー
Zend Framework 2 MVCモジュールを見ると、これが可能であることがわかります。
DispatchListener.php
try {
$return = $controller->dispatch($request, $response);
} catch (\Exception $ex) {
$e->setError($application::ERROR_EXCEPTION)
->setController($controllerName)
->setControllerClass(get_class($controller))
->setParam('exception', $ex);
// look here...
$results = $events->trigger(MvcEvent::EVENT_DISPATCH_ERROR, $e);
$return = $results->last();
if (! $return) {
$return = $e->getResult();
}
}
コントローラ内で例外がスローされたときにトリガーされるMvcEventを確認できます。このイベントには、他にもいくつかのプロセスがあります。
このイベントにメソッドをアタッチして、好きなことをすることができます。
例として、ExceptionStrategy.phpを見てください
public function prepareExceptionViewModel(MvcEvent $e)
{
....
}
これはあなたの答えではありませんが、zf2の他の人に役立ちます
public function indexAction()
{
echo "json"
return $this->getResponse();
}
最も簡単な方法は、configを使用することですconfig/autoload/local.php
return array(
'view_manager' => array(
'display_exceptions' => false
)
);
この行を追加すると、例外が無効になります。さらに、開発サーバーで独自のlocal.php
サーバーを使用できます。