我刚开始为 Zend Framework 2 开发。我正在尝试向我的应用程序添加一个简单的菜单。菜单最终将从数据库中加载为用户可定义的书签,所以目前,我正在尝试实例化我定义的视图助手,在控制器中以编程方式添加页面,然后将视图助手的导航注入视图模型。我的问题是,当我尝试使用 ServiceLocator 在控制器中检索视图助手时,我得到ServiceNotFoundException
:
应用程序\查看\帮助\快捷方式菜单:
namespace Application\View\Helper;
use Zend\Navigation\Navigation;
class ShortcutsMenu extends Navigation {
public function shortcutsMenu() {
//...
}
public function __construct() {
//...
}
}
在 Module.php 中
public function getServiceConfig() {
return array(
'view_helper' => array(
'factories' => array(
'shortcutsmenu' => function($sm) {
$smenu = new \Application\View\Helper\ShortcutsMenu();
return $smenu;
}
),
),
);
索引控制器.php:
$smenu = $this->getServiceLocator()->get('shortcutsmenu'); // throws ServiceNotFoundException
//"Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for shortcutsmenu"
$smenu->addPage(AbstractPage::factory(array(
'label' => 'Homepage',
'order' => '-1',
'uri' => '/',
)));
// ...
}
谁能告诉我我错过了什么?
编辑:我想在应用程序范围的布局中生成的 HTML 类似于:
<!-- Side tabs shortcuts -->
<ul id="shortcuts">
<li class="current"><a href="./" class="shortcut-home" title="Home">Home</a></li>
<li><a href="userpage1.html" title="My messages">My messages</a></li>
<li><a href="/a/b/c?id=4" title="Bob's calendar">Bob's calendar</a></li>
<li>...</li>
</ul>
可能使用 URI 样式链接而不是 MVC 链接。