EdpModuleLayouts를 사용하여 하나의 레이아웃을 내 zf2 웹 응용 프로그램의 모바일 버전에 사용하고 다른 레이아웃을 "데스크톱"버전으로 사용합니다.다른 모듈에 다른 레이아웃 사용 zend framework 2
응용 프로그램 모듈 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_layouts'는 최상위 항목이어야합니다. 이 주제에 대해 몇 가지 다른 스레드를 확인하십시오. 그 중 10-20 개는 같습니다.) – Sam