2017-10-27 3 views
0

In Zend 2 & zend 3この問題が発生しました。 次のコードはClassNameクラスをインポートしていないため、 "YourModule \ Controller \ ClassName"が見つかりません。"エラーが発生しました"ではなく、すべての例外メッセージをzendに表示しますか?

<?php 
public function indexAction() { 
    $x = new ClassName() ; //I've not imported ClassName, which raise the error. 
} 

いくつかの例外のこれらのタイプは、コントロールを発生onDistpach(DispatchListner)でキャッチセクションに行きます。このcatchブロックで$ ex-> getMessage()をエコーすると、適切なエラーメッセージが出力されます。たとえば、 "YourModule \ Controller \ ClassName"が見つからない場合

public function onDispatch(MvcEvent $e) 
{ 
    .... 

} catch (\Throwable $ex) { 
      $caughtException = $ex; //HERE 
     //$ex->getMessage() ; 
} 

しかし、zendによってレンダリングされる最終出力は次のとおりです。発生した例外に関する情報はありません。

エラーが発生しました実行中にエラーが発生しました。

後でもう一度お試しください。

他のほとんどのケースなし例外それは適切なスタックトレースを印刷します。 Zend-MvcでDispatchListnerを編集せずにこれらのエラーメッセージを表示するようにzendを設定するにはどうすればよいですか?

編集: 私は例外の前に)(のerror_reportingに&はdisplay_errorsを回してみました。 また、例外を生成し、まだ動作しないコードの周りにキャッチしようとしました。 また私のmodule.config。

<?php 
'view_manager' => array( 
'display_not_found_reason' => true, 
'display_exceptions'  => true, // SET TO true 

は、あなたの本番環境で作業する場合はfalseに戻し、それを設定することを忘れないでください:あなたのmodule.config.phpファイルで

true
'view_manager' => array(
    'display_not_found_reason' => true, 
    'display_exceptions' => true, 
... 
+0

可能な重複([表示PHPエラーのZendフレームワークを使用して] https://stackoverflow.com/questions/1201709/display-php-errors-when- using-zend-framework) – Boratzan

+0

またはhttps://stackoverflow.com/questions/6392265/how-to-check-full-error-log-in-zend-framework – Boratzan

+0

またはhttps://stackoverflow.com/questions/3941860/zend-framework-not-all-errors-are- – Boratzan

答えて

0

ディスパッチおよびレンダリングの例外は、MvcEvent :: EVENT_RENDER_ERRORおよびMvcEvent :: EVENT_DISPATCH_ERRORにリスナーを付けることで追跡できます。これは、ZF3のソリューションもZF2でも動作する可能性があります。

自分のエラーレンダー機能に赤いタイトルが付いています。

public function exception($e) { 
    echo "<span style='font-family: courier new; padding: 2px 5px; background:red; color: white;'> " . $e->getMessage() . '</span><br/>' ; 
    echo "<pre>" . $e->getTraceAsString() . '</pre>' ; 
} 

ブートストラップ上のリスナーを取り付け

public function onBootstrap(MvcEvent $e) 
{ 
    $eventManager  = $e->getApplication()->getEventManager(); 
    $moduleRouteListener = new ModuleRouteListener(); 
    $moduleRouteListener->attach($eventManager); 

    //Attach render errors 
    $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, function($e) { 
     if ($e->getParam('exception')) { 
      $this->exception($e->getParam('exception')) ; //Custom error render function. 
     } 
    }); 
    //Attach dispatch errors 
    $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) { 
     if ($e->getParam('exception')) { 
      $this->exception($e->getParam('exception')) ;//Custom error render function. 
     } 
    }); 
} 
関連する問題