首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将div添加到KnpMenu (Symfony2.1)

如何将div添加到KnpMenu (Symfony2.1)
EN

Stack Overflow用户
提问于 2012-09-11 04:46:05
回答 1查看 2.3K关注 0票数 0

每当有人将鼠标悬停在菜单按钮上时,我都想做一个落水箱,我正在用KnpMenuBundle生成菜单。

我想得到的是这样的结构:

代码语言:javascript
复制
<lu>
    <li><a>...</a></li>
    <li>
        <a>...</a>
        <div>...</div>
    </li>
    <li><a>...</a></li>
<lu>

如果可能的话,我想从div内部渲染一个控制器。

这可以做到吗?

如果我在文档中遗漏了什么,请发一个链接,因为我已经搜索了几个小时了…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 04:57:30

这是可以做到的,我曾经这样做过一次,但这种事情是否应该使用KnpMenuBundle来完成,我不太确定!无论如何,我通过将我的MenuBuilder类定义为服务并注入@templating服务来实现这一点。这不会调用您提到的控制器操作,但允许您呈现任何您想要的模板……

代码语言:javascript
复制
/**
 * @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>中,但在进行了一些样式化之后,这并没有造成太大的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12359192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档