kaishiyoku / laravel-menu
为 Laravel 创建支持 CSS 突出显示的菜单
Requires
- php: >=7.2.5
- cjstroud/classnames-php: ^1.0
- graham-campbell/security: ^9.0
- illuminate/contracts: ^6.0|^7.0|^8.0
- illuminate/routing: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
- illuminate/view: ^6.0|^7.0|^8.0
README
具有自动 CSS 突出显示的 Laravel 菜单
目录
版本信息
版本 4 是对包的全面重构。因此引入了破坏性变更。
最低要求
- PHP >=7.2.5
- Laravel ^6.0
通用
此包有助于在 Laravel 中定义和渲染菜单结构。主要功能是突出显示活动页面的 CSS。该包与 Laravel 相耦合,不能独立使用。
重要信息
请注意,您的路由必须命名。
安装
Composer
通过运行 composer require "kaishiyoku/laravel-menu": "^4.0"
将 "kaishiyoku/laravel-menu": "^4.0"
添加到您的 composer.json。
通过运行 composer update
更新您的依赖项。
Laravel 配置
该包支持 Laravel 自动发现,但如果您愿意,可以将 Kaishiyoku\LaravelMenu\ServiceProvider::class,
添加到 providers 数组
并将 'Menu' => Kaishiyoku\LaravelMenu\Facade::class,
添加到 aliases 数组中的 app/config/app.php。
使用方法
- 使用
php artisan make:middleware Menus
生成一个新的中间件 - 将
\App\Http\Middleware\Menus::class,
添加到 Http Kernel 中的$middlewareGroups
>'web'
- 将您的菜单添加到 Menus 中间件的
handle()
方法中
示例 \App\Http\Middleware\Menus.php
<?php namespace App\Http\Middleware; use Closure; class Menus { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // your menus go here return $next($request); } }
编辑 \App\Http\Kernel
[...] protected $middlewareGroups = [ 'web' => [ // [...] \App\Http\Middleware\Menus::class, ], ]; [...]
要在 Blade 模板中的某个位置显示配置的菜单,必须调用 render 函数
<div id="navbar" class="collapse navbar-collapse"> {!! \LaravelMenu::render() !!} {!! \LaravelMenu::render('navbar-right') !!} </div>
如果 render() 方法没有参数被调用,将渲染默认菜单。菜单名称必须唯一,否则将抛出异常。
如果您有任何问题,请随时提交工单。
示例
\LaravelMenu::register() ->addClassNames(['mr-auto']) ->link('users.index', 'All users') ->dropdown('Comments', [ 'comments.index' => 'All', 'comments.create' => 'Create', ]);
您还可以使用条件来决定是否渲染给定的菜单项,例如
\LaravelMenu::register() ->linkIf(auth()->check(), 'users.index, 'All users') ->dropdownIf(auth()->check(), 'Comments', [ 'comments.index' => 'All', 'comments.create' => 'Create', ]);
对于下拉链接,您可以定义多个路由,以便在访问这些路由之一时,相应的链接将被高亮显示。第一个路由将是链接所指向的路由。
\LaravelMenu::register() ->dropdown('Comments', \LaravelMenu::dropdownContainer() ->header('General') ->link('comments.index,comments.top,comments.show', 'All') ->divider() ->link('comments.create', 'Create') );
可用方法
addClassNames(string|array $classNames)
将 CSS 类名添加到菜单容器disableXssFilter()
禁用集成的 XSS 过滤器link(string $route, ?string $title = null, bool $strict = false)
- 您还可以使用逗号分隔的 $route 列表(例如:
entries.index,entries.create,entries.create
)
- 您还可以使用逗号分隔的 $route 列表(例如:
dropdown(string $title, DropdownContainer $dropdownContainer)
- DropdownContainer 类具有以下可用方法
link(string $route, ?string $title = null)
header(string $title)
divider()
text(string $text)
content(string $content)
➡ 每个容器方法都可以带有一个条件。只有当这个条件为真时,容器才会被渲染。(例如:linkIf(bool $condition, string $route, ?string $title = null, bool $strict = false)
)
MenuContainer: linkIf
, dropdownIf
, textIf
, contentIf
DropdownContainer: linkIf
, headerIf
, dividerIf
外观和感觉
当前默认的外观和感觉基于 Bootstrap 4。
您可以通过发布它们来自定义每个 Blade 组件(php artisan vendor:publish --provider="Kaishiyoku\LaravelMenu\ServiceProvider"
)
许可证
MIT (https://github.com/Kaishiyoku/laravel-menu/blob/master/LICENSE)
作者
Twitter: @kaishiyoku
网站: https://andreas-wiedel.de