导航
建议编辑平台面板菜单是图形用户界面的重要元素,因为它是项目的主要导航工具。
用法
默认菜单注册发生在 app/Orchid/PlatformProvider.php
中:
namespace App\Orchid;
use Orchid\Screen\Actions\Menu;
use Orchid\Platform\OrchidServiceProvider;
class PlatformProvider extends OrchidServiceProvider
{
// ...
public function menu(): array
{
return [
Menu::make('示例')->url('https://orchid.software/'),
];
}
}
注意: 在创建每个元素时,会自动生成一个唯一键,该键不应重复。不过,您可以使用
slug
方法手动更改键。
链接
使用 Menu
类通过 URL 或路由创建链接。要使用 URL 创建链接,请使用 url
方法:
use Orchid\Screen\Actions\Menu;
Menu::make('示例')->url('https://orchid.software/');
要使用路由创建链接,请使用 route
方法并提供路由名称:
Menu::make('示例')->route('route.idea');
确保路由在应用程序的路由文件中定义。
活动状态
要确定链接活动状态,已经使用 dwightwatson/active 包,
当使用 route
和 url
时会自动设置,但可以通过显式指令进行更改:
Menu::make('示例')
->route('route.idea')
->active('route.idea*');
Menu::make('示例')
->route('route.idea')
->active([
'route.idea',
'route.other'
]);
Menu::make('示例')
->url('/pages/contact')
->active('not:pages/contact');
基于权限
当某些链接应根据权限的可用性或其他情况缺失时,这是一个相当预期的情况,为此:
Menu::make('示例')->permission('platform.idea');
或任何其他返回布尔值的检查:
Menu::make('示例')->canSee(true);
外观
对于菜单项,您可以指定一个图形图标:
Menu::make('示例')->icon('bs.heart');
也可以通过设置第一个元素的标题将其集成到视觉组中:
Menu::make('示例')->title('Analytics');
徽章通知
菜单项可以通过数字值通知用户任何事件,为此:
Menu::make('Comments')
->icon('bubbles')
->route('platform.comments')
->badge(fn () => 10);
排序项目
通过设置序列号进行排序:
Menu::make('Second')->sort(5);
Menu::make('First')->sort(4);
创建嵌套菜单
您可以指定单级子菜单,如下所示:
Menu::make('Multi Level')
->icon('code')
->list([
Menu::make('Second Level Item 1')->icon('bs.bag')->sort(2),
Menu::make('Second Level Item 2')->icon('bs.heart')->sort(0),
]),
要创建动态子菜单,您需要添加主项目并使用 slug
方法指定其唯一名称。然后,您可以向新项目添加其他元素。
Menu::make('Multi Level')
->slug('sub-menu')
->icon('code')
->list([
Menu::make('Second Level Item 1')->icon('bs.bag'),
Menu::make('Second Level Item 2')->icon('bs.heart'),
]),
然后在我们自己的包中添加新项目,如:
use Orchid\Support\Facades\Dashboard;
Dashboard::addMenuSubElements('sub-menu', [
Menu::make('Second Level Item 2')->icon('badge')
]);
注意: 图形界面支持菜单嵌套到第二级。有关创建有效且直观导航的更多详细信息,请查看我们的设计指南。