2016-05-19 102 views
0

我想將整個錯誤處理捆綁到一個模塊中。它工作到目前爲止,但錯誤模板仍然是默認[project root]/module/Application/view/error/index.phtml。我想使用它,但由我的附加代碼包裝。爲此,我需要添加默認的異常模板作爲部分。不可能(再)將模塊名稱傳遞給部分視圖助手。所以我想這(建議here):如何在Zend Framework 2中從視圖文件夾之外的其他模塊渲染視圖?

[project root]/module/ErrorHandling/view/exception.phtml

echo $this->partial('Application/error/index'); 

但它沒有工作:

的Zend \查看\異常\ RuntimeException的:Zend的\查看\渲染器\ PhpRenderer :: render:無法呈現模板「Application/error/index」;解析器無法解析到一個文件中/var/www/.../my-project/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php:494

它只能從意見/module/{AnotherModule}/view/{another-module}子文件夾。

如何從另一個模塊(但在/module/{AnotherModule}/view/{another-module}子文件夾之外)獲取視圖,將其渲染爲部分?

回答

0

一種解決方法是將所需的視圖添加到視圖管理器模板圖,如:

config/autoload/global.php

return [ 
    'view_manager' => [ 
     'template_map' => [ 
      'default_zf_error_view' => __DIR__ . '/../../module/Application/view/error/index.phtml' 
     ] 
    ] 
]; 

它的工作原理,但它仍然有興趣知道,如何解決這個問題有點清潔的方式。

0

您不必將其添加到global.php

這將足以將其添加到模塊的module.config.php。這些視圖也可以在其他模塊內部訪問,因爲ZF2合併了不同模塊的所有配置文件。在這裏閱讀更多關於in the documentation in the chapter Advanced Configuration Tricks

所以在module.config.php

return [ 

    //... 

    'view_manager' => [ 
     'template_map' => [ 
      'default_zf_error_view' => __DIR__ . '/../../module/Application/view/error/index.phtml' 
     ] 
    ] 

    //... 

]; 

在你現在可以做任何其他模塊的控制器:

$viewModel->setTemplate('default_zf_error_view'); 
相關問題