我在网上找到了一种使用以下方法声明自定义导航菜单的方法:
module.config.php
模块中的 Acl
:
'navigation_helpers' => array(
'invokables' => array(
'menu' => 'Acl\View\Helper\Navigation\Menu',
)
),
现在我想将参数传递给自定义Menu
构造函数。我在ZF2世界中很新,但似乎我必须在module.php
文件中创建某种服务。我试图将代码放入getServiceConfig
和getViewHelperConfig
方法但没有成功(自定义菜单未“使用”)。
我应该使用数组结构和方法的任何想法/提示吗?
非常感谢,
答案 0 :(得分:1)
为此,您应该将菜单注册为工厂,然后在工厂内实例化类时可以将参数传递给菜单:
创建MenuFactory
类:
<?php
namespace Acl\View\Helper\Navigation\Factory;
/**
* Factory to create menu
*/
class MenuFactory implements FactoryInterface
{
/**
* {@inheritDoc}
* @return Menu
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$param = // get your param from servicelocator or create the parameter
$menu = new Menu($param);
return $menu;
}
}
现在您将菜单注册为工厂,而不是可调用:
'navigation_helpers' => array(
'factories' => array(
'menu' => 'Acl\View\Helper\Navigation\Factory\MenuFactory',
)
),
如果您想阅读更多信息,那么有很多关于如何在ZF2中执行此操作的信息,例如 this article here