导航页面具有依赖关系,只有在视图中创建容器类new
才能满足这些依赖关系。 Mvc
页面需要一个RouteStackInterface
(路由器)实例和一个RouteMatch
实例。同样Uri
页面需要当前的Request
实例。
如果您查看Zend\Navigation\Service\AbstractNavigationFactory
及其preparePages
和injectComponents
方法,您可以清楚地看到此内容。
的看法是不被实例化的菜单,而不是把菜单配置规格在module.config.php
正确的地方...
<?php
return array(
'navigation' => array(
'table_actions' => array(
array(
'label' => 'On/Off',
'module' => 'import',
'controller' => 'import',
'action' => 'setstatus',
'params' => array('id' => null),
),
),
),
);
写工厂扩展AbstractNavigationFactory
类并实现getName()
方法,它返回(在这个例子中table_actions
)你的菜单键规范
<?php
namespace Application\Navigation\Service;
use Zend\Navigation\Service\AbstractNavigationFactory;
class TableActionsFactory extends AbstractNavigationFactory
{
/**
* @return string
*/
protected function getName()
{
return 'table_actions';
}
}
地图工厂服务名在service_manager
规范的名称0 ...
<?php
return array(
'navigation' => array(// as above ...)
'service_manager' => array(
'factories' => array(
'TableActionsMenu' => 'Application\Navigation\Service\TableActionsFactory',
),
),
);
现在你可以使用该服务的名称TableActionsMenu
你只是映射
<div class="table-column">
<?php echo $this->navigation('TableActionsMenu')->menu(); ?>
</div>
最后,如果调用视图助手,因为我怀疑,你需要改变页面的属性取决于视图,您也可以这样做,导航容器有find* methods,可以从导航助手访问并用于检索页面。
下面是一个例子寻找与匹配的页面标签页,然后在渲染之前,改变它(显然不是一个理想的搜索PARAM,但它给你的想法)
$page = $this->navigation('TableActionsMenu')->findOneByLabel('On/Off');
$page->setLabel('Off/On');
// and then render ...
echo $this->navigation('TableActionsMenu')->menu();
你试过<?PHP的回声$ this-> navigation() - > menu-> renderMenu($ container)?>? –
是的,我只是做了,仍然是一样的。 :( – b4rt3kk