webfactory / navigation-bundle
此包的最新版本(5.8.1)没有可用的许可信息。
5.8.1
2024-09-04 15:20 UTC
Requires
- php: ^7.2|8.0.*|8.1.*|8.2.*|8.3.*
- ext-json: *
- psr/container: ^1.0
- psr/log: ^1.1|^2.0|^3.0
- symfony/config: ^4.0|^5.0|^6.0|^7.0
- symfony/console: ^4.0|^5.0|^6.0|^7.0
- symfony/dependency-injection: ^4.2|^5.0|^6.0|^7.0
- symfony/event-dispatcher: ^4.3|^5.0|^6.0|^7.0
- symfony/event-dispatcher-contracts: ^1.0|^2.0|^3.0
- symfony/http-foundation: ^5.3|^6.0|^7.0
- symfony/http-kernel: ^4.0|^5.0|^6.0|^7.0
- symfony/proxy-manager-bridge: ^4.0|^5.0|^6.0|^7.0
- symfony/service-contracts: ^1.0|^2.0|^3.0
- twig/twig: ^1.36|^2.6|^3.0
Requires (Dev)
- symfony/stopwatch: ^5.4|^6.0|^7.0
Suggests
- ocramius/proxy-manager: damit der NavigationTree wirklich lazy erzeugt wird
- symfony/stopwatch: um zu messen, wie lange der Aufbau des NavigationTree dauert
- dev-master
- 5.8.1
- 5.8.0
- 5.7.0
- 5.6.0
- 5.5.0
- 5.4.4
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.0
- 5.2.0
- 5.1.0
- 5.0.0
- 4.x-dev
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.0
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 3.x-dev
- 3.12.1
- 3.12.0
- 3.11.0
- 3.10.0
- 3.9.0
- 3.8.2
- 3.8.1
- 3.8.0
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.0
- 3.5.0
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.0
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.1
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.1
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-update-dependencies
- dev-166581-vorschau-sichtbarkeit
- dev-symfony_6
- dev-ordered-list-breadcrumbs
- dev-php8-3.x
- dev-HEAD
- dev-135579_Navigation-Bundle-BEM-verwenden--temp
This package is auto-updated.
Last update: 2024-09-04 15:21:11 UTC
README
Symfony Bundle 包含
- 用于创建导航树的工厂,您可以根据需要添加 BuildDirectors
- 用于渲染导航元素(树、祖先、面包屑)以及检查导航树的 Twig 函数
安装
composer require webfactory/navigation-bundle
... 根据您的 Symfony 版本在内核中激活该包。
在 Twig 中渲染导航元素
简单的导航列表
语法
{{ navigation_tree(root, maxLevels = 1, expandedLevel = 1, template = '@WebfactoryNavigation/Navigation/navigation.html.twig') }}
示例
{{ navigation_tree(root = {"webfactory_pages.page_id": root_page_id}) }}
{{ navigation_tree(
root = {"webfactory_pages.page_id": root_page_id, "_locale": app.request.locale},
template = 'AppBundle:Navigation:navigation.html.twig'
) }}
祖先列表
祖先列表是从给定的起始级别到当前活动节点的活动路径。如果您想在常规导航之外渲染例如第三级导航,这将很有用。
语法
{{ navigation_ancestry(startLevel, maxLevels = 1, expandedLevels = 1, template = '@WebfactoryNavigation/Navigation/navigation.html.twig') }}
示例
{{ navigation_ancestry(startLevel = 1) }}
{{ navigation_ancestry(startLevel = 1, template = '@App/Navigation/secondaryNav.html.twig') }}
面包屑
语法
{{ navigation_breadcrumbs(template = '@WebfactoryNavigation/Navigation/breadcrumbs.html.twig') }}
示例
{{ navigation_breadcrumbs() }}
{{ navigation_breadcrumbs(template = '@App/Navigation/breadcrumbs.html.twig') }}
自定义
对于上述每个函数,您都可以提供一个 Twig 模板,在该模板中您可以扩展基本模板并覆盖每个块。请参阅默认块在 src/Resources/views/Navigation/navigationBlocks.html.twig
中的位置。
示例
{# layout.html.twig: #} ... {{ navigation_tree(root = {"webfactory_pages.page_id": root_page_id}, template = 'AppBundle:Navigation:navigation.html.twig') }} ...
{# AppBundle:Navigation:navigation.html.twig: #} {% extends "@WebfactoryNavigation/Navigation/navigation.html.twig" %} {% block navigation_list %} <nav class="project-specific-classes"> {{ parent() }} </nav> {% endblock %}
修改 NavigationTree
实现一个 Webfactory\Bundle\NavigationBundle\Build\BuildDirector
。示例
<?php namespace AppBundle\Navigation; use JMS\ObjectRouting\ObjectRouter; use Symfony\Component\Config\Resource\FileResource; use Webfactory\Bundle\NavigationBundle\Build\BuildContext; use Webfactory\Bundle\NavigationBundle\Build\BuildDirector; use Webfactory\Bundle\NavigationBundle\Build\BuildDispatcher; use Webfactory\Bundle\NavigationBundle\Tree\Tree; use Webfactory\Bundle\WfdMetaBundle\Config\DoctrineEntityClassResource; final class KeyActionBuildDirector implements BuildDirector { /** @var YourEntityRepository */ private $repository; /** @var ObjectRouter */ private $objectRouter; public function __construct(YourEntityRepository $repository, ObjectRouter $objectRouter) { $this->repository = $repository; $this->objectRouter = $objectRouter; } public function build(BuildContext $context, Tree $tree, BuildDispatcher $dispatcher): void { if (!$this->isInterestedInContext($context)) { return; } foreach ($this->repository->findForMenu() as $entity) { $context->get('node') ->addChild() ->set('caption', $entity->getName()) ->set('visible', true) ->set('url', $this->objectRouter->path('detail', $entity)); } $this->addResourcesToTreeCache($dispatcher); } private function addResourcesToTreeCache(BuildDispatcher $dispatcher): void { $dispatcher->addResource(new FileResource(__FILE__)); $dispatcher->addResource(new DoctrineEntityClassResource(YourEntity::class)); } }
将您的实现定义为服务并标记为 webfactory_navigation.build_director
。示例
<service class="AppBundle\Navigation\YouEntityBuildDirector"> <argument type="service" id="AppBundle\Repository\YourEntityRepository" /> <argument type="service" id="JMS\ObjectRouting\ObjectRouter" /> <tag name="webfactory_navigation.build_director"/> </service>
更多内容请参阅 src/Resources/doc/How-To-Use-Klassendiagramm.puml
。
致谢,版权和许可
此项目由 webfactory GmbH,波恩启动。
版权 2015 - 2021 webfactory GmbH,波恩。代码在 MIT 许可证下发布。