You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FilamentPHP中获取当前Tenant ID用于导航配置?

在FilamentPHP多租户应用中添加带当前租户ID的导航链接

实现思路

在AdminPanelProvider中定义导航项时,不要直接硬编码租户ID,而是使用闭包动态生成URL——闭包会在请求上下文执行,此时可以获取到当前登录用户的关联租户。

具体代码实现

在你的AdminPanelProvider.php文件的panel()配置中,找到navigation()方法,添加如下自定义导航项:

use Filament\Facades\Filament;
use Filament\Navigation\NavigationItem;

public function panel(Panel $panel): Panel
{
    return $panel
        // ... 其他面板配置
        ->navigation([
            // ... 原有导航项
            NavigationItem::make('租户设置')
                ->url(function () {
                    // 获取当前租户
                    $tenant = Filament::getCurrentTenant();
                    
                    // 仅当存在租户时返回带ID的链接,否则返回默认路径或null
                    return $tenant ? "/{$tenant->id}/settings" : '/settings';
                })
                ->icon('heroicon-c-cog-6-tooth') // 可选:设置导航图标
                ->visible(function () {
                    // 可选:控制仅当有租户时显示该导航项
                    return Filament::getCurrentTenant() !== null;
                }),
        ]);
}

关键说明

  • 使用Filament::getCurrentTenant()助手函数获取当前关联的租户,这个方法在请求上下文内可以正确返回当前用户的租户(前提是多租户配置已正确启用)。
  • 导航项的url()方法支持传入闭包,闭包会在每次请求时执行,确保获取到实时的租户ID。
  • 通过visible()闭包可以控制导航项的显示逻辑,比如仅在用户有活跃租户时才显示。

额外注意事项

如果你的租户ID不是使用id字段,记得把代码中的$tenant->id替换为实际的租户标识字段(比如$tenant->uuid)。

内容的提问来源于stack exchange,提问作者Mathéo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:05:54