几乎每个网站都有导航菜单。生成这些HTML导航菜单看似简单,但随着菜单数量的增加,会变得越来越麻烦:不仅需要渲染一些基本的HTML,更多的时候,还需要管理哪些菜单当前是活动的。如果菜单有子菜单,您也希望激活子菜单的父菜单。更何况有时候还需要在一些菜单项之间插入HTML。
为此,我编写了一个扩展包(GitHub地址:https://GitHub . com/spatie/laravel-menu),提供了一个简单优雅的API,文档完整丰富。在这里,我将简要地向您介绍它的用法。
虽然这个扩展包是独立于框架的,但是在这里我们将其设置为在Laravel应用程序中使用。
首先,我们使用Composer安装这个扩展:
composer require spatie/laravel-menu然后在config/app.php的providers和aliases中注册服务提供者和facade:
// config/app.php'providers' => [ // ... Spatie\Menu\Laravel\MenuServiceProvider::class,],'aliases' => [ // ... 'Menu' => Spatie\Menu\Laravel\MenuFacade::class,],接下来,我们将使用它来生成一个HTML导航菜单。
假设我们想生成这样一个菜单:
下面是它的实现代码:
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About'));然后我们可以使用render方法在视图中显示菜单:
// in a blade viewHere is the menu: {!! $menu !!}让我们试着生成一个更复杂的菜单:
基本用法
') ->prefixLinks('/basic-usage') ->link('/your-first-menu', 'Your First Menu') ->link('/working-with-items', 'Working With Items') ->link('/adding-sub-menus', 'Adding Sub Menus') );如果希望激活菜单项,可以调用setActive方法:
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About')->setActive());手动设置菜单项激活非常烦人。在大多数情况下,更合适的方法是让代码自己判断哪些菜单项被激活:
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About')->setActive()); ->setActiveFromRequest();除了指定链接,您还可以灵活地使用其他方法来指向菜单项:
Menu::new() ->url('/', 'Home') ->route('contact', 'Contact') ->action('AcmeController@detail', 'Acme');这个扩展包里还有很多其他有用的方法,比如属性操作、附加内容、宏支持等。请参考/d/file/04/j421u4qrfkn17828
声明:本文为翻译。请看这里的原文。
adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!