【问题标题】:How to add a div to KnpMenu (Symfony2.1)如何将 div 添加到 KnpMenu (Symfony2.1)
【发布时间】:2012-09-10 20:46:04
【问题描述】:

每当有人将鼠标悬停在菜单按钮上时,我想制作一个下拉框,我使用 KnpMenuBundle 生成菜单。

我想要的是这样的结构:

<lu>
    <li><a>...</a></li>
    <li>
        <a>...</a>
        <div>...</div>
    </li>
    <li><a>...</a></li>
<lu>

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

这个可以吗?

如果我错过了文档中的某些内容,请发布链接,因为我已经搜索了几个小时...

【问题讨论】:

    标签: symfony symfony-2.1 knpmenubundle knpmenu


    【解决方案1】:

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

    /**
     * @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;
    }
    

    如果我没记错的话,我认为这最终会将模板包装在一个额外的 &lt;ul&gt;...&lt;/ul&gt; 中,但是经过一些样式设置后,这并没有造成太大的问题。

    【讨论】:

    • 谢谢,我现在就试试。我也刚刚发现:github example,可能对其他人有用。如果不应该这样做 KnpMenuBundle 你用什么来做你的菜单?
    • 这将是我使用 KnpMenuBundle 的一个示例,因为它正在为顶级菜单项呈现子菜单(例如 &lt;ul&gt;&lt;li&gt;Parent&lt;ul&gt;&lt;li&gt;Child 1&lt;/li&gt;&lt;li&gt;Child 2&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;!-- more top-level menu items... --&gt;&lt;/ul&gt;)。如果我发现自己不得不过多地修改菜单来控制 HTML 输出,我倾向于使用好的、老式的树枝模板来制作它。
    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2019-11-07
    • 1970-01-01
    • 2017-08-24
    • 2017-10-12
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多