gpt4 book ai didi

zend-framework2 - 如何使布局依赖于域而不是模块?

转载 作者:行者123 更新时间:2023-12-02 03:45:41 27 4
gpt4 key购买 nike

我有一个应用程序,其中有几个子域。我重定向到基于域的模块。每个模块都有不同的布局。基于 evandotpro/edp-module-layouts :

public function onBootstrap($e)
{
$e->getApplication()->getEventManager()->getSharedManager()->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function($e) {
...
...

此外,我还有身份验证模块 - 它是全局的。

client.app.com/auth/login
handheld.app.com/auth/login

与同一个模块相关联

但是,我会保留与域关联的模块布局。

当然,我有一些想法可以解决这个问题,但我感兴趣的是是否有任何“干净”的解决方案。

最佳答案

我用过的脏 hack.:

  • 我有自己布局的模块终端。并与自己联系域(路由类型 Zend\Mvc\Router\Http\Hostname )
  • 我有模块 Auth 可以整体添加授权应用程序并重定向到登录页面

为了在那种情况下强制终端布局,我添加了 Terminal Module.php:

public function onBootstrap(MvcEvent $e)
{
$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, '\\'));

if ($_SERVER['HTTP_HOST'] ==
$e->getApplication()->getServiceManager()->get('config')['router']['routes']['terminal']['options']['route']
&& $moduleNamespace=='Auth') {
$controller->layout('layout/terminal');
}
}, 1);
}

和往常一样,对不起我的英语...

关于zend-framework2 - 如何使布局依赖于域而不是模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343589/

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