为Zend框架2中的所有模块设置通用布局

Pie*_*rre 1 php layout zend-framework2

我正在研究ZF2项目,我的目录中有一些模块:

/module/module1
/module/module2
/module/module3
/module/module4
[...]
Run Code Online (Sandbox Code Playgroud)

但是,在每个模块中我也分别有一个特定的布局:

/module/module1/view/layout/layout.phtml
/module/module2/view/layout/layout.phtml
/module/module3/view/layout/layout.phtml
/module/module4/view/layout/layout.phtml
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何为我的所有模块设置通用布局,而不必在需要时修改每个布局.

谢谢

And*_*rew 8

您可以将布局设置为每个模块配置中的所需内容,只需将布局更改为您想要的内容:

module.config.php或getConfig()内部

'view_manager' => array(
    // other stuff here.. 
    'template_map' => array(
        // use Applications layout instead
        'layout/layout' => __DIR__ . '/../Application/view/application/layout/layout.phtml',
    ),
    'template_path_stack' => array(
        __DIR__ . '/../view',
    ),
),
Run Code Online (Sandbox Code Playgroud)

或者您可以设置每个模块以在Module.php中有选择地设置它的布局:

Module.php

/**
 * Initialize
 */
public function init(ModuleManager $manager)
{
    $events = $manager->getEventManager();
    $sharedEvents = $events->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
        /* @var $e \Zend\Mvc\MvcEvent */
        // fired when an ActionController under the namespace is dispatched.
        $controller = $e->getTarget();
        $routeMatch = $e->getRouteMatch();
        /* @var $routeMatch \Zend\Mvc\Router\RouteMatch */
        $routeName = $routeMatch->getMatchedRouteName();
        $controller->layout('application/layout/layout');
    }, 100);
}
Run Code Online (Sandbox Code Playgroud)