ZF2 将代码从 module.config.php 移动到 module.php
ZF2 Move code from module.config.php to module.php
我在网上找到了一种使用以下方法声明自定义导航菜单的方法:
module.config.php
在 Acl
模块中:
'navigation_helpers' => array(
'invokables' => array(
'menu' => 'Acl\View\Helper\Navigation\Menu',
)
),
现在我想将一个参数传递给自定义 Menu
构造函数。我是 ZF2 世界的新手,但似乎我必须在 module.php
文件中创建某种服务。我尝试将代码放入 getServiceConfig
和 getViewHelperConfig
方法但没有成功(自定义菜单不是 "used")。
有idea/hint数组结构和我应该使用的方法吗?
非常感谢,
为此,您应该将菜单注册为工厂,然后在工厂内实例化 class 时可以将参数传递给菜单:
创建 MenuFactory
class:
<?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;
}
}
现在您将菜单注册为 factory 而不是 invokable:
'navigation_helpers' => array(
'factories' => array(
'menu' => 'Acl\View\Helper\Navigation\Factory\MenuFactory',
)
),
如果您想阅读更多内容,那么有很多关于如何在 ZF2 中执行此操作的信息,例如 this article here
我在网上找到了一种使用以下方法声明自定义导航菜单的方法:
module.config.php
在 Acl
模块中:
'navigation_helpers' => array(
'invokables' => array(
'menu' => 'Acl\View\Helper\Navigation\Menu',
)
),
现在我想将一个参数传递给自定义 Menu
构造函数。我是 ZF2 世界的新手,但似乎我必须在 module.php
文件中创建某种服务。我尝试将代码放入 getServiceConfig
和 getViewHelperConfig
方法但没有成功(自定义菜单不是 "used")。
有idea/hint数组结构和我应该使用的方法吗?
非常感谢,
为此,您应该将菜单注册为工厂,然后在工厂内实例化 class 时可以将参数传递给菜单:
创建 MenuFactory
class:
<?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;
}
}
现在您将菜单注册为 factory 而不是 invokable:
'navigation_helpers' => array(
'factories' => array(
'menu' => 'Acl\View\Helper\Navigation\Factory\MenuFactory',
)
),
如果您想阅读更多内容,那么有很多关于如何在 ZF2 中执行此操作的信息,例如 this article here