Ich benutze EdpModuleLayouts, um ein Layout für die mobile Version meiner zf2 Webapp und ein anderes auf die "Desktop" -Version zu verwenden.Verwenden Sie differents Layouts zu differents Module zend Framework 2
Die Konfiguration in module.config.php in Applikationsmodul:
...'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 des Moduls Anwendung es so ist: Schließlich
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);
}
, habe ich ein Layout in Anwendungsmodul und ein anderes im Benutzermodul. In diesem Moment rendern jedes Mal das Layout im Benutzermodell, obwohl ich die Anwendungs-URL eingebe.
Ich steckte darauf, ich schätze etwas Hilfe.
Warum du den Code duplizierst? Benutzt du sein Modul oder nur den Code seines Moduls? Außerdem gibt es einen Fehler in Ihrer Konfiguration. Die 'module_layouts' sollten ein Eintrag der obersten Ebene sein. Überprüfen Sie ein paar andere Threads zu diesem Thema, es gibt 10-20 davon;) – Sam