這是可以做到的,我曾經做過正是這一點,但這樣的事情是否應該做的事使用KnpMenuBundle我不太確定!無論如何,我通過將我的MenuBuilder類定義爲服務並注入@templating服務來實現這一點。這不叫一個控制器動作,正如你所說的,但可以讓你呈現你想要的任何模板...
/**
* @param Request $request
* @return \Knp\Menu\ItemInterface
*/
protected function createUserMenuLoggedOut(Request $request)
{
$menu = $this->factory->createItem('root');
$signInItem = $menu->addChild('Sign in', array('route' => 'fos_user_security_login'));
$signInItem
->setLinkAttributes(array(
'id' => 'sign-in-link',
'class' => 'dropdown-toggle',
'data-toggle' => 'dropdown',
'data-target' => '#signin'
))
->setAttributes(array(
'id' => 'signin',
'class' => 'dropdown'
))
;
// THIS IS THE LINE YOU'RE INTERESTED IN
$signInItem->addChild($this->templating->render('ApplicationSonataUserBundle:Security:login_options.html.twig'));
// more menu items...
return $menu;
}
如果我沒有記錯,我覺得這結束了在附加<ul>...</ul>
但這種包裝的模板在造型之後沒有造成太多問題。
謝謝我現在就試試我。另外我剛剛發現這個:[github示例](https://gist.github.com/2278437),可能對其他有用。如果不應該這樣做KnpMenuBundle你用什麼菜單? –
這將是的,當我** **會使用KnpMenuBundle一個例子,因爲它正在渲染的子菜單(如:'
- 父
- 兒童1
- 兒童2
<! - 更多的頂級菜單項... - >
')作爲頂級菜單項。如果我發現自己不得不篡改菜單來控制HTML輸出,我傾向於使用老式的樹枝模板。 – RobMasters