dluwang/breadcrumb

PHP 面包屑构建服务

v2.0.0 2019-10-21 16:49 UTC

README

Build Status Latest Stable Version License: MIT

这是一个提供构建面包屑服务的包。

安装

安装

composer require dluwang/breadcrumb

用法

定义导航 Dluwang/Breadcrumb/Crumb 是一个用于定义面包屑的类。它的 __construct 方法有三个必填参数和一个可选参数

public function __construct($id, $label, $url, Crumb $prev = null)
  1. $id 是面包屑的 id
  2. $label 是面包屑的标签
  3. $url 是面包屑的 URL
  4. $prev 是当前面包屑的前一个面包屑

以上所有属性都可以通过对象实例访问。

注册前一个面包屑 注册前一个面包屑有两种方法。

  • 通过构造函数

    $crumb = new Crumb('the-id', 'the-label', 'the-url', $prev);

  • 通过 prev() 方法 $crumb->prev($prevCrumb);

转换为数组

$crumb->toArray();

results: [['crumb-1', 'crumb 1', '/crumb-1'], ['crumb-2', 'crumb 2', '/crumb-2']]

如果你的面包屑是递归构建的,它将生成所有前一个面包屑。

定义面包屑

Dluwang/Breadcrumb/Breadcrumb 是一个接口,作为 Crumb 的仓库。所有面包屑实现都应该实现 Dluwang/Breadcrumb/Breadcrumb 接口。目前,这个包提供了一个内存实现,位于 Dluwang/Breadcrumb/InMemoryBreadcrumb

$breadcrumb = new InMemoryBreadcrumb()

构造函数有一个可选参数,即已注册的面包屑。

注册面包屑

$breadcrumb->register($crumb) // single crumb registration
$navigator->register([$crumb1, $crumb2]) // mutiple crumbs

如上所述,延迟子项可以随意注册到导航器。

通过 ID 获取面包屑

$breadcrumb->crumb('crumb-id')

全局前一个面包屑

有时你可能需要将前一个面包屑应用于所有面包屑。以下是如何实现的方法。

$global = new Crumb('the-id', 'the-label', 'the-url');
$breadcrumb->prev($global);

集成

目前,这个包只与 laravel 框架 集成。集成仅注册默认实现绑定(内存实现)并提供别名。

测试

要运行测试,请运行以下命令

vendor/bin/phpunit