我有一个应用程序,其中有几个子域。我重定向到基于域的模块。每个模块都有不同的布局。基于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
与同一模块相关联
但是,我会保留与域关联的模块布局。
当然我有一些解决这个问题的黑客的想法,但我对是否有“干净”的解决方案感兴趣。
答案 0 :(得分:1)
我使用的肮脏黑客。:
因此,为了在这种情况下强制终端布局,我添加了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);
}
并且一如既往地抱歉我的英语......