Zend framework2 Zend框架2:Zend_导航
我只是想知道在Zend Framework2中使用Zend_导航的最佳方式是什么。目前,我正在尝试为页眉和页脚菜单添加配置。两个菜单都应自动填充。不过,我遇到了很多问题: a) 默认菜单的最佳位置应该是应用程序模块 b) 我在module.config.php的根目录中添加了以下内容:Zend framework2 Zend框架2:Zend_导航,zend-framework2,Zend Framework2,我只是想知道在Zend Framework2中使用Zend_导航的最佳方式是什么。目前,我正在尝试为页眉和页脚菜单添加配置。两个菜单都应自动填充。不过,我遇到了很多问题: a) 默认菜单的最佳位置应该是应用程序模块 b) 我在module.config.php的根目录中添加了以下内容: 'view_helpers' => array( 'helper_map' => array( 'navigation' => 'Application\View
'view_helpers' => array(
'helper_map' => array(
'navigation' => 'Application\View\Helper\Navigation'
),
),
My Navigation.php位于./module/Application/src/Application/View/Helper/Navigation.php中
并载有:
class Navigation extends AbstractContainer {
public function __construct($menu = null) {
var_dump($menu);
}
}
我知道这门课可能错了。但目前我甚至没有让ZF2加载该类。有什么问题吗?假设您使用的是beta5,那么您只是配置了错误的viewhelper。有关如何正确执行此操作的详细信息,请参见 关于如何使用导航:我将在servicemanager中创建一个名为
navigation
的服务,并将导航放入一个新的配置键:
return array(
'navigation' => array(
// your navigation config goes here
),
'servicemanager' => array(
'factories' => array(
'navigation' => function($sm) {
$config = $sm->get('Configuration');
$navigation = new \Zend\Navigation\Navigation($config->get('navigation'));
return $navigation;
}
),
),
'view_helpers' => array(
'factories' => array(
'navigation' => function($sm) {
return new \My\View\Helper\Navigation($sm->get('navigation'));
}
),
),
);
(不确定导航类名。没有查看过。)
这有三件事:
- 提供一个名为
的服务,指向实际实例 如果zend的导航navigation
- 提供视图助手,并将导航实例的引用交给它
- 创建一个新的顶级键
,其中包含导航配置。其他模块可以在此处添加自定义导航,而无需更改设置中的任何内容导航
$this->getServiceLocator()->get('navigation');
在视图中,助手可以通过其构造函数访问导航:
Navigation extends // ...
{
public function __construct($navigation)
{
// do anything you want
}
}
其他模块可以通过写入相同的键向导航中添加条目:
return array(
'navigation' => array(
// further navigation entries
),
);
初始逻辑(如设置服务/视图助手)的放置位置由您决定。我更喜欢为此编写一个自己的模块,可以用一行代码禁用(导致导航不再存在)。但是默认模块可能也是一个好地方。
最终,您可以为导航和视图帮助器创建自己的工厂类,而不是将配置与代码混合
免责声明:代码只是草稿-未经测试