我开始使用已配置的模块Common:
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
return array(
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Common\Controller\Index',
'action' => 'index',
),
),
),
),
),
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
'controllers' => array(
'invokables' => array(
'Common\Controller\Index' => 'Common\Controller\IndexController'
),
),
'view_helpers' => array(
'invokables' => array(
'flashMessengerHelper' => 'Common\View\Helper\FlashMessenger',
),
),
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
该模块包含: ZF2客户端\模块\共同\视图\布局\ layout.phtml
当我访问路线时,我会看到一个页面并加载了布局。我有另一个模块Wall,它已配置:
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
return array(
'router' => array(
'routes' => array(
'wall' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:username',
'constraints' => array(
'username' => '\w+'
),
'defaults' => array(
'controller' => 'Wall\Controller\Index',
'action' => 'index',
),
),
)
),
),
'controllers' => array(
'invokables' => array(
'Wall\Controller\Index' => 'Wall\Controller\IndexController'
),
),
'view_manager' => array(
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
当我访问路线'/:username'时,我注意到Common模块中描述的布局会自动加载。 Wall模块如何知道从常见加载布局? Wall模块在其视图文件夹中不包含任何布局,但似乎从Common加载了一个。如果在Zend的网站上有任何描述布局系统功能的文档,我还无法将其挖掘出来。 Wall或Common的控制器中没有任何内容表示正在设置模板。因此,控制器代码中没有setTemplate。
感谢您发帖...
答案 0 :(得分:3)
您发布的配置是向视图管理器的模板路径堆栈添加两条路径:zf2-client\module\Common\view
和zf2-client\module\Wall\view
。默认情况下,ZF2会查找要呈现的名为layout/layout
的视图。它将检查视图堆栈中的匹配文件。由于您的公共模块中只有其中一个,而且它是使用的。