控制器的ZF2子目录=>查看文件

时间:2014-08-27 09:42:36

标签: php zend-framework2

我想按照以下方式构建我的项目:

MyModule/src/MyModule/Controller/TestController.php 
MyModule/src/MyModule/Controller/Admin/TestController.php

问题是,两个控制器都会查找视图文件 mymodule / test.phtml ,因为目录 Admin 无关紧要。有没有办法处理目录而不在每个控制器操作中手动写下它?

我想像这样构建它:

MyModule/src/MyModule/Controller/TestController.php => view/mymodule/test.phtml
MyModule/src/MyModule/Controller/Admin/TestController.php => view/mymodule/admin/test.phtml

或许有人有想法以其他方式构建它?

由于

2 个答案:

答案 0 :(得分:0)

我之前在之前的项目中看到过这种情况。很确定你可以在module.config.php文件中配置它,可能是这样的:

// View file paths
'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
    'doctype'                  => 'HTML5',
    'not_found_template'       => 'error/404',
    'exception_template'       => 'error/index',
    'template_map'             => array(
        'MyModule/Admin/Test' => __DIR__ . '/../view/mymodule/admin/test.phtml'
    )
)

确保路径正确无误。但是,您可以只拥有一个管理模块,并让所有管理员控制器驻留在那里,您不必担心您现在对视图文件的控制器/管理员问题。然后,所有其他模块都可以扩展,使用DI或服务mgr从Admin模块获得所需的内容。

答案 1 :(得分:0)

您可以使用自己的模板注入器覆盖默认模板注入器,您可以在其中指定将解析管理控制器的模板路径的逻辑。

通过示例

查看我的博客文章,深入介绍此主题

http://blog.igorvorobiov.com/2014/10/18/creating-a-custom-template-injector-to-deal-with-sub-namespaces-in-zend-framework-2/