doppy/nav-bundle

此包已被废弃,不再维护。未建议替代包。

为您的应用程序提供菜单的包。

安装: 8 363

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

0.5.0 2018-05-02 13:25 UTC

This package is auto-updated.

Last update: 2022-08-30 15:18:17 UTC


README

一个提供创建菜单及其缓存的有用工具的 Symfony 包。

安装

添加到 composer

    composer req doppy/nav-bundle

并确保该包已注册。目前没有 symfony flex 的配方,但默认配方应该适用于大多数情况。

创建您自己的 NavBuilder

您可以创建自己的 NavBuilder 服务。此服务将返回一个包含 NavItemNav 对象,这实际上是您的导航或菜单。

在 symfony 中配置您的服务,添加一个简单的标签使其可用

services:
    \App\NavBuilder\SideBarBuilder:
        tags:
            - { name: "doppy_nav.builder", provides: "sidebar" }

provides 参数是强制性的,并且是您的 Nav 可用的名称。

在需要时,您可以添加自己的依赖项。如果想要根据特定用户或权限自定义 Nav,有用的建议可以是 tokenstorageauthorization_checker

您可以选择如何处理 nav-label 的翻译。您可以在 Builder 本身中设置正确的文本,或在渲染模板时通过翻译器运行标签。

NavNavItem 对象都有一个可用的 attributes 属性,您可以使用它自由配置在渲染时可能需要的其他属性。

使用您的 Nav

有几种方法可以使用您创建的 Nav

从提供者获取

您可以直接从提供者请求 Nav 对象。这样您可以将一个 Nav 插入另一个 Nav 中。

$navProvider = $this->getServiceContainer()->get('doppy_nav.provider');
$nav = $navProvider->get('sidebar', array('youroption' => 'yourvalue'));
  • 第二个参数可以用来向构建器传递选项,这是可选的。
  • 如果选项中不包含键 _locale,它将使用当前区域设置添加。

在 Twig 中获取

通过在 Twig 中获取对象,然后可以以您喜欢的方式渲染它。

{{ set nav = doppy_nav('sidebar', ['youroption': 'yourvalue']) }}

这与提供者的 get 方法相同(见上文)。

在 Twig 中渲染

您还可以直接在 twig 中渲染 Nav。这是一个更简洁的解决方案,也支持缓存。

{{ doppy_nav_render('sidebar', [], 'YourBundle:Nav:nav.html.twig', []) }}
  • 前两个参数传递给提供者以获取 Nav 对象。
  • 第三个参数是用于渲染的模板。如果没有提供,将使用默认模板。
  • 第四个参数传递给模板进行渲染。键 nav 是保留的,因为 Nav 对象将被传递到那里。

缓存您的导航

由于它可能不会经常改变,因此缓存您的导航可能是个好主意。

配置缓存

请确保已安装 symfony/cache 组件(通过 composer),因为它用于缓存。调整您的配置以启用缓存

doppy_nav:
    cache:
        provider: "cache.app"
        render:   "cache.app"

您需要指定要使用的缓存服务名称。

  • provider 将缓存提供者的结果(实际上是导航对象)
  • render 将缓存 twig 渲染函数的结果。

您使用哪种缓存由您决定,但您可能不需要两者都使用。在大多数简单情况下,您只需启用 render

默认情况下禁用缓存。

要调整缓存持续时间,请调整所提供服务的配置。

可缓存构建器

要使您的构建器可缓存,只需实现接口 Doppy\NavBundle\Builder\CacheableBuilderInterface。现在您需要提供一个额外的方法,用于在请求导航时提供要使用的缓存键。通常基本名称就足够了,但如果您为特定用户自定义导航,您可能希望添加用户名或用户ID。

将在您的缓存键后附加一个后缀,它由以下内容构成

  • Builder
    • 提供的选项的 md5 哈希。
  • Render
    • 提供者提供的任何哈希。
    • 提供的模板和模板选项的 md5 哈希。

失效

目前没有配置缓存失效。您只需等待其过期,或清除所有 symfony 缓存。

高级:创建自己的提供者

构建器只能创建 1 个导航(但您可以通过选项稍作调整)。您可以添加自己的提供者,该提供者可以管理大量导航。您需要实现接口 \Doppy\NavBundle\Provider\ProviderInterface。如果您想在数据库中管理它们,这可能很有用。

要了解如何进行此操作,请查看服务 doppy_nav.provider.builder

您还可以使用 \Doppy\NavBundle\Provider\CacheableProviderInterface 使您的提供者可缓存。