honda / navigation
0.2.1
2021-11-11 18:07 UTC
Requires
- php: ^8.0
- honda/url-pattern-matcher: ^1.0.1
- honda/url-resolver: 1.0.0
- illuminate/contracts: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- orchestra/testbench: ^6.13
- pestphp/pest: ^1.0.5
- phpstan/phpstan: ^0.12.48
- symfony/var-dumper: ^5.2.0
This package is auto-updated.
Last update: 2022-09-18 14:53:30 UTC
README
安装
需要PHP 8.0+
您可以通过composer安装此包
composer require honda/navigation
使用方法
创建导航栏
use Felix\Navigation\Navigation; Navigation::macro('theName', function (Navigation $navigation) { // ... });
渲染导航栏
use Felix\Navigation\Navigation; Navigation::theName();
项目
链接
如果您传递一个路由名称,如login
或articles.index
,则会解析出实际路径。您可以向路由解析器传递额外的上下文。
如果您传递其他任何内容,它将按原样渲染。
$item->href('articles.index');
$item->href('articles.edit', ['article' => 1]);
$item->href('https://repo.new');
图标
此包与Blade Icons无缝集成。
$item->icon('heroicon-eye');
强制激活状态
这将绕过可能定义的激活模式,并强制项目以激活状态渲染。
$item->alwaysActive();
激活模式
根据高级模式标记项目为激活状态。如果没有提供激活模式,则使用解析出的路由路径。有关更多信息,请参阅URL模式匹配器。
$item->activePattern('/articles/*');
条件渲染项目
use Felix\Navigation\Item; $navigation->addIf($isAdmin, 'Settings', function (Item $item) { // ... }); $navigation->addUnless($isReader, 'Articles', function (Item $item) { // ... });
部分
添加部分
use Felix\Navigation\Item; use Felix\Navigation\Section; $navigation->addSection('Name', function (Section $section) { $section->add('Child', function (Item $item) { // ... }); });
条件渲染部分
use Felix\Navigation\Section; $navigation->addSectionIf($isAdmin, 'Admin', function (Section $section) { // ... }); $navigation->addSectionUnless($isReader, 'Bookmarks', function (Section $section) { // ... });
Blade组件
我们提供了一个名为
<x-navigation-sidebar />
的组件,您可以直接使用它(需要AlpineJS才能完全启用)。
// app/View/Components/Topbar.php use Felix\Navigation\Components\Component; class Topbar extends Component { public function viewName() : string{ return 'components.topbar'; } }
您可以访问一个包含Navigation
对象的$items
变量。
现在在您的视图中
<x-topbar :items="\Felix\Navigation\Navigation::myName()"/>
测试
composer test
为Laravel提供的导航是由 Félix Dorn 在 MIT许可 下创建的。