falkan3/laravel-navigation

在 Laravel 应用中管理菜单、面包屑和其他导航元素

dev-main 2023-03-18 00:19 UTC

This package is not auto-updated.

Last update: 2024-09-29 06:03:28 UTC


README

在 Laravel 应用中管理菜单、面包屑和其他导航元素

Latest Version on Packagist run-tests Total Downloads

Laravel Navigation 是 Laravel Menu 的精神继承者。Laravel Menu 仍然会得到积极维护,但这两个包之间存在一些主要差异。

Laravel Menu 的主要目标是使用 PHP 构建 HTML 菜单。Laravel Navigation 描述了应用程序的导航树,可以用作创建菜单和面包屑等导航元素的基。Laravel Menu 拥有丰富的 API 用于 HTML 生成。Laravel Navigation 不执行任何 HTML 生成(尽管我们可能在将来提供一些 Blade 文件)。相反,Laravel Navigation 应该提供灵活性,让您可以构建自己的 UI,无需担心导航树和活动状态的复杂性。将其视为一个 无渲染组件

// typically, in a service provider

Navigation::make()
    ->add('Home', route('home'))
    ->add('Blog', route('blog.index'), function (Section $section) {
        $section
            ->add('All posts', route('blog.index'))
            ->add('Topics', route('blog.topics.index'));
    })
    ->addIf(Auth::user()->isAdmin(), function (Navigation $navigation) {
        $navigation->add('Admin', route('admin.index'));
    });

导航对象可以渲染成树或面包屑。

以下是一些示例,当访问 /blog/topics/laravel

// Render to tree
Navigation::make()->tree();
[
    { "title": "Home", "url": "/", "active": false, "children": [] },
    {
        "title": "Blog",
        "url": "/blog",
        "active": false,
        "children": [
            { "title": "All posts", "url": "/blog", "active": false, "children": [] },
            { "title": "Topics", "url": "/blog/topics", "active": true, "children": [] }
        ],
    },
    { "title": "Admin", "url": "/admin", "active": false, "children": [] }
]
// Append additional pages in your controller
Navigation::make()->activeSection()->add($topic->name, route('blog.topics.show', $topic));

// Render to breadcrumbs
Navigation::make()->breadcrumbs();
[
    { "title": "Blog", "url": "/blog" },
    { "title": "Topics", "url": "/blog/topics" },
    { "title": "Laravel", "url": "/blog/topics/laravel" }
]
// Render the current section
Navigation::make()->current();
{ "title": "Home", "url": "/", "attributes": [] }

支持我们

我们投入了大量资源来创建 一流的开放式源代码包。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感激您从家乡寄给我们明信片,注明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在 我们的虚拟明信片墙上

安装

您可以通过 composer 安装此包

composer require spatie/laravel-navigation

测试

composer test

变更日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全性

如果您发现有关安全性的错误,请通过 security@spatie.be 发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。