gpt4 book ai didi

layout - zend框架2对不同模块使用不同布局

转载 作者:行者123 更新时间:2023-12-02 00:52:05 26 4
gpt4 key购买 nike

我使用 EdpModuleLayouts 将一种布局用于我的 zf2 web 应用程序的移动版本,另一种布局用于“桌面”版本。

Application模块中module.config.php中的配置:

...'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(
'module_layouts' => array(
'Application' => 'layout/application',
'User' => 'layout/user',
),
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),

应用程序模块的Module.php是这样的:

public function onBootstrap(MvcEvent $e)
{

$e->getApplication()->getServiceManager()->get('translator');
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);


$e->getApplication()->getEventManager()->getSharedManager()
->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function($e) {
$controller = $e->getTarget();
$controllerClass = get_class($controller);
$moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\\'));
$config = $e->getApplication()->getServiceManager()->get('config');
if (isset($config['module_layouts'][$moduleNamespace])) {
$controller->layout($config['module_layouts'][$moduleNamespace]);
echo $config['module_layouts'][$moduleNamespace];
}
}, 100);

}

最后,我在应用程序模块中有一个布局,在用户模块中有另一个布局。此时每次在用户模型中渲染布局,即使我输入了应用程序 url。

我坚持了这一点,我感谢一些帮助。

最佳答案

更新你的 module.config.php

'view_manager' => array(
'template_path_stack' => array(
'admin' => __DIR__ . '/../view',
),
'template_map' => array(
'admin/layout' => __DIR__ . '/../view/layout/layout.phtml',
),
),

现在在 module.php 中写入以下行

use Zend\ModuleManager\ModuleManager;

public function init(ModuleManager $mm)
{
$mm->getEventManager()->getSharedManager()->attach(__NAMESPACE__,
'dispatch', function($e) {
$e->getTarget()->layout('admin/layout');
});
}

现在在模块的 View 目录中创建一个文件夹布局,并创建一个名为layout.phtml的文件,并将布局代码放在那里。

关于layout - zend框架2对不同模块使用不同布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com