用户菜单位于管理布局的右上角。它是完全可定制的。
每个菜单项都由一个操作表示,并能以相同方式进行自定义。要注册新项,你可以将这些操作传递给配置的userMenuItems()方法:
use App\Filament\Pages\Settings;
use Filament\Actions\Action;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userMenuItems([
Action::make('settings')
->url(fn (): string => Settings::getUrl())
->icon('heroicon-o-cog-6-tooth'),
// ...
]);
}
默认情况下,用户菜单位于顶部栏。如果顶部栏被禁用,它会被添加到侧边栏。
你可以选择始终将其移动到侧边栏通过将一个 position 参数传递给 userMenu() 方法在 配置 中:
use Filament\Enums\UserMenuPosition;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userMenu(position: UserMenuPosition::Sidebar);
}要自定义用户菜单开头处的用户个人资料链接,请注册一个新项,使用 profile 数组键,并传入一个函数,该函数自定义操作 对象:
use Filament\Actions\Action;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userMenuItems([
'profile' => fn (Action $action) => $action->label('Edit profile'),
// ...
]);
}有关创建个人资料页面的更多信息,请查阅身份验证功能文档。
要在用户菜单末尾自定义用户注销链接,请使用 logout 数组键注册一个新项,并传递一个函数,该函数 自定义操作 对象:
use Filament\Actions\Action;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userMenuItems([
'logout' => fn (Action $action) => $action->label('Log out'),
// ...
]);
}您还可以通过使用 visible() 或 hidden() 方法,有条件地隐藏用户菜单项,并传入一个要检查的条件。传入一个函数将推迟条件评估,直到菜单实际渲染时:
use App\Models\Payment;
use Filament\Actions\Action;
Action::make('payments')
->visible(fn (): bool => auth()->user()->can('viewAny', Payment::class))
// or
->hidden(fn (): bool => ! auth()->user()->can('viewAny', Payment::class))POST HTTP 请求您可以从用户菜单项发送一个 POST HTTP 请求,方法是将 URL 传递给 url() 方法,并且还可以使用 postToUrl():
use Filament\Actions\Action;
Action::make('lockSession')
->url(fn (): string => route('lock-session'))
->postToUrl()您可以通过将 false 传递给 userMenu() 方法来完全禁用用户菜单:
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userMenu(false);
}