【问题标题】:how determine ZF2 the path to controller action phtml如何确定 ZF2 控制器动作 phtml 的路径
【发布时间】:2017-02-02 09:45:57
【问题描述】:

有一个控制器:

模块/ModuleName/src/ModuleName/Controller/SubFolder/ControllerNameController
带动作:
doSomethingAction()
在 module.config.php 中:
'view_manager' => [
    'template_path_stack' => array(
        'ModuleName' => __DIR__ . '/../view',
    ),
]

在我的一个 ZF2 项目中,像这样搜索 .phtml 文件:

查看/模块名称/子文件夹/控制器名称/do-something.phtml
这对我来说没问题。

但在另一个项目 ZF2 中搜索 .phtml 文件,如下所示:

查看/模块名称/控制器名称/do-something.phtml
这对我来说不行,因为控制器名称在模块中必须是唯一的。

这种行为的原因在哪里?

为什么ZF2会忽略文件夹?

【问题讨论】:

    标签: zend-framework2


    【解决方案1】:

    这可能是由于两个不同的项目使用了不同版本的 ZF2。我猜想视图模板路径中包含子文件夹的项目是 ZF2 post 2.3.2 的版本,而不包含子文件夹的项目是 2.3.2 之前的版本。

    您可以在此处查看拉取请求:https://github.com/zendframework/zendframework/pull/5670

    如果您正在运行 2.3.2 之前的应用程序,我建议您将 ZF2 依赖项更新到最新的稳定版本

    在此拉取请求中还合并了一些重大更改,我认为这是 ZF3 的一部分:

    https://github.com/zendframework/zend-mvc/pull/139

    如果您已经在使用更高版本的框架,这可能会有用

    【讨论】:

    • 我的 composer.json 有 "zendframework/zendframework": "~2.5" 并已成功更新。并且: Zend\Version\Version::VERSION = '2.5.1'
    【解决方案2】:

    谢谢。这是路由中缺少的 __NAMESPACE__ 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多