dotkernel/dot-navigation

DotKernel 导航组件

3.5.1 2024-07-31 13:06 UTC

This package is auto-updated.

Last update: 2024-08-31 13:17:19 UTC


README

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

允许您在模板内部轻松定义和解析菜单,基于配置的方法。

安装

运行

composer require dotkernel/dot-navigation

ConfigProvider 合并到您的应用程序配置中。

该软件包使用 dot-helpers 软件包,如果尚未合并,请将 dot-helpers 的 ConfigProvider 也合并到您的应用程序配置中!

在路由和调度中间件之间注册 NavigationMiddleware 中间件管道。

配置

定位 dot-navigation 的可分发配置文件 vendor/dotkernel/dot-navigation/config/autoload/navigation.global.php.dist,并将其在您的项目中复制为 config/autoload/navigation.global.php

组件

菜单或导航容器是一个实现 \RecursiveIterator 接口的类。它具有层次结构,节点称为页面(见 Page 类),可能包含子节点。它基本上是一个树。

页面扩展了 NavigationContainer 类。NavigationContainer 是最高节点,代表整个菜单。此节点的子节点是定义每个导航项的 Page 实例。

页面有一个对其父页面的引用,并且可以有选项和属性。对选项或属性接受的内容没有限制。

选项可以是描述页面的任何信息片段。存在一些预定义的选项,以便导航模块能够与其他 dot 模块无缝协作。

属性是定义菜单项的键值对。它们通常在解析菜单时作为 HTML 属性插入,但当然,这取决于实现方式。

NavigationService 类是一个处理所有定义的菜单容器的服务。它可以从其提供者获取容器,检查页面是否活跃,以及获取页面的生成 URI。

容器提供者

每个菜单都可以从不同的来源创建。从源创建菜单容器是容器提供者的责任。

每个提供者必须实现 ProviderInterface 接口,并在 ProviderPluginManager 中注册。

目前我们只提供了一种提供者,即 ArrayProvider,它能够从配置文件中定义的 PHP 数组中检索并创建菜单容器。

导航渲染器

用于将导航容器渲染为可显示的格式。它可以渲染简单的 HTML ul 列表或使用部分模板,在模板引擎中渲染菜单。

部分方法通常是更灵活的,可以在模板中定义和检查自定义规则。

如果您使用 twig,包 dot-twigrenderer 中已经提供了一个 twig 扩展,您可以使用它轻松解析模板中的菜单。

使用部分方法时,模板将接收容器、导航服务和开发者设置的任何额外参数作为参数。

导航容器在解析时通过其在配置文件中定义的名称进行引用。

所需的页面选项和属性

以下是在配置中每个页面应定义的选项

  • label - 菜单项的文本
  • routeuri - 定义菜单项将具有的路径或链接
  • permission - 可选,如果存在授权服务,则可以用来省略未授权访问的菜单项。