Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework2 如何在运行时更改视图路径_Zend Framework2 - Fatal编程技术网

Zend framework2 如何在运行时更改视图路径

Zend framework2 如何在运行时更改视图路径,zend-framework2,Zend Framework2,在我的ZF2应用程序中,我想在运行时更改模板目录 默认路径在module.config.php中设置: 'template_path_stack' => array( __DIR__ . '/../view', ), 我想把它改成相当于 'template_path_stack' => array( __DIR__ . '/../view-alternate', ), 在运行时,我可以根据数据库中存储的用户偏好动态更改页面主题。模板名称解析是一

在我的ZF2应用程序中,我想在运行时更改模板目录

默认路径在
module.config.php
中设置:

'template_path_stack' => array(
        __DIR__ . '/../view',
 ),
我想把它改成相当于

'template_path_stack' => array(
        __DIR__ . '/../view-alternate',
 ),

在运行时,我可以根据数据库中存储的用户偏好动态更改页面主题。

模板名称解析是一个繁重的过程。最好手动提供模板名称

我建议您使用“模板映射”而不是“模板路径堆栈”。您可以创建某种命名约定来区分这两个主题,它可以是您可以动态管理的前缀


有一个工具可以将堆栈转换为模板映射:

我最终得到的解决方案是使用

再加上在会话中保存主题的选项,我可以更改主题,因为它不在运行时。重新加载页面是必要的


这是一个解决办法。答案不是。

因此,您建议在controller?中使用
setTemplate()
,或者在Module.php中的onBootstrap()中更好地设置模板。这样,就不会通过控制器重复代码。