- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何自定义KNPMenuBundle?
我不知道如何使用 KnpMenuBundle 添加图像或跨度标签。
我只是想要这个:
<ul>
<li>
<img src="{{asset('bundles/mybundle/images/my_image.png')}} /">
<span>My Title</span>
</li>
</ul>
在 MenuBuilder 中,这将以:
$menu->addChild('My Title');
如何将图像添加到<li>
中声明?
实际上有一个简单的方法可以在 bundle 中执行此操作:
1 复制模板 vendor\KnpMenu\src\Knp\Menu\Resources\views\knp_menu.html.twig
进入你的Acme\AcmeBundle\Resources\views\Menu\knp_menu.html.twig
并按如下方式扩展:
{% extends 'knp_menu.html.twig' %}
2 根据您的需要修改模板。例如,如果您决定每次使用 $menu->addChild('Your Title');
时添加一个跨度标签,只需在<a></a>
之间添加span标签即可:
{% block linkElement %}
<a href="{{ item.uri }}"{{ _self.attributes(item.linkAttributes) }}>
<span>{{ block('label') }}</span>
</a>
{% endblock %}
3 您现在可以在使用菜单时选择自定义布局:
{{ knp_menu_render('main', {'template': 'AcmeBundle:Menu:knp_menu.html.twig'}) }}
最佳答案
CSS 适用于这种情况,但有时您可能需要更显着地添加或更改标记。为此,您可以使用此处定义的自定义渲染器:https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/custom_renderer.md
执行此操作的 bundle 示例是 MopaBoostrapBundle我在这里强调了重要的部分。
添加knp_menu.renderer
标签的服务定义:
services:
mopa_bootstrap.navbar_renderer:
class: Mopa\Bundle\BootstrapBundle\Navbar\Renderer\NavbarRenderer
arguments: [ @service_container, [] ]
tags:
# The alias is what is used to retrieve the menu
- { name: knp_menu.renderer, alias: navbar }
例如,twig 模板可以这样编写。
<div class="navbar {{ (navbar.hasOption('fixedTop') and navbar.getOption('fixedTop')) ? 'navbar-fixed-top' : '' }}">
<div class="navbar-inner">
<div class="container{{ (navbar.hasOption('isFluid') and navbar.getOption('isFluid')) ? '-fluid' : '' }}">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
{% if navbar.hasOption('title') %}<a class="brand" href="{{ path(navbar.getOption('titleRoute')) }}">{{ navbar.getOption('title') }}</a>{% endif %}
<div class="nav-collapse">
{{ navbar.hasMenu('leftmenu') ? knp_menu_render(navbar.getMenu('leftmenu'), {'currentClass': 'active', 'ancestorClass': 'active', 'allow_safe_labels': 'true'}) : '' }}
{% if navbar.hasFormView('searchform') %}
{%- set form_view = navbar.getFormView('searchform') -%}
{%- set form_type = navbar.getFormType('searchform') -%}
{%- set form_attrs = form_view.vars.attr -%}
{% form_theme form_view _self %}
<form class="navbar-search pull-{{ form_attrs.pull|default('left') }}" method="{{ form_attrs.method|default('post') }}" action="{{ path(navbar.getFormRoute('searchform')) }}">
{{ form_widget(form_view) }}
</form>
{% endif %}
{{ navbar.hasMenu('rightmenu') ? knp_menu_render(navbar.getMenu('rightmenu'), {'currentClass': 'active', 'ancestorClass': 'active', 'allow_safe_labels': 'true'}) : '' }}
</div>
</div>
</div>
</div>
关于symfony - 自定义 KnpMenuBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226963/
我刚试过 knpLabs MenuBundle 我没有收到当前项目的标志,我从 https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resourc
如何自定义KNPMenuBundle? 我不知道如何使用 KnpMenuBundle 添加图像或跨度标签。 我只是想要这个: My Title
我希望我的 View 代码如下所示: Title 我通过 Menu Builder 创建菜单元素: class Builder
我的网站使用 knpmenubundle,这是我的问题:我有这条路线列出的用户列表:/admin/users菜单是这样的: User (is opened) list (is active)
如何在KnpMenuBundle 的生成器中获取用户数据? 我知道我可以通过 Controller 中的这一行获取用户数据: $user = $this->get('security.context'
假设我有这样的路由设置: users_list: pattern: /users defaults: { _controller: AcmeBundle:User:list } us
我在 KnpMenuBundle 的导航栏菜单上写下了最后几天的内容。我只想简单地给模板一些参数,然后对其使用react。是否可以?我试过这个: $menu->addChild('Registrati
我用 KnpMenuBundle 在我的导航栏菜单上写了最后几天。我只想在途中给模板一些参数,然后对其使用react。是否可以?我试过这个: $menu->addChild('Registration
我目前正在使用 Symfony 包制作菜单:KnpMenuBundle。我使用 Bootstrap 4 作为样式表。 Bootstrap 4 要求导航栏中的每个列表项都具有“nav-item”类:
我想渲染一个 HTML 标签,例如: $menu->addChild('Dashboard', array( 'route' => 'dashboard', 'label' => '
我正在使用 KnpMenuBundle,我需要将自定义 css 和标签添加到具有“uri”=>“#”路由的链接之一。我将如何做到这一点? 我希望链接看起来像这样: Settlement
我想将附加参数 {'id': '555'} 从 Twig 模板传递到 MenuBuilder 中的 $options-parameter .php。 Twig 看起来像: ... {{ knp_men
我想知道,将“当前”类更改为“事件”类以便 Bootstrap 能够正确使用它的最佳方法是什么? 我考虑过复制并覆盖 knp_menu_html.twig 但我认为这不是最好的方法...... 有什么
我是一名优秀的程序员,十分优秀!