gpt4 book ai didi

php - Zend Framework 2 从模块添加导航项

转载 作者:可可西里 更新时间:2023-11-01 00:02:59 25 4
gpt4 key购买 nike

我正在尝试从模块中添加模块特定的导航项。我可能做错了。到目前为止我所拥有的是:

config/autoload/navigation.global.php(目前有效)

<?php
return array(
'navigation' => array(
'default' => array(
array(
'label' => 'Home',
'route' => 'home',
'order' => -100,
'pages' => array(
),
),
),
),
);

module/Books/Module.php:(我正在尝试在首页下添加“书籍”导航项(不与内联))

class Module
{
public function onPreDispatch($e) {
$pages = array(
array(
'label' => 'Books',
'route' => 'books',
),
);
$navigation = $e->getParam('application')->getServiceManager()->get('navigation');
$navigation->findOneByRoute('home')->addPages($pages);
}
/* ... */
}

所以在上面的例子中(路线是正确的),我没有得到错误,事件在预调度时触发,但没有任何东西被添加到导航容器中。

我想要完成的是导航如下:

  Home
|-> Books
|-> Module2
|-> etc..

最佳答案

你不需要 Hook 一个事件。只需将模块特定的导航配置放在模块的 module.config.php 中。每个模块的配置都被合并,如果你有缓存,那么如果你为许多模块这样做,在性能方面会更好。

重要的是在导航中为您的项目命名。在 config/autoload/navigation.global.php 中为主页项添加一个名称:

<?php
return array(
'navigation' => array(
'default' => array(
'home' => array( // <-- name "home" added (name is arbitrary)
'label' => 'Home',
'route' => 'home',
'order' => -100,
),
),
),
);

然后在module/Books/config/module.config.php

return array(
'navigation' => array(
'default' => array(
'home' => array(
'pages' => array(
'home/book' => array( // <-- name is arbitrary
'label' => 'Books',
'route' => 'books',
),
),
),
),
),
);

最后两个配置合并,你有一个导航键:

return array(
'navigation' => array(
'default' => array(
'home' => array(
'label' => 'Home',
'route' => 'home',
'order' => -100,
'pages' => array(
'home/book' => array(
'label' => 'Books',
'route' => 'books',
),
),
),
),
),
);

希望这有帮助:)

斯托扬

关于php - Zend Framework 2 从模块添加导航项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15607841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com