FilamentPHP资源详情页:点击编辑按钮时保留关联管理器活跃标签
解决FilamentPHP详情页编辑按钮保留关联管理器标签状态的问题
要让编辑按钮跳转后保留当前活跃的关联管理器标签,只需给默认的EditAction添加自定义URL生成逻辑,把当前URL中的activeRelationManager参数携带过去即可,具体修改如下:
修改你的ViewOrganization页面代码,引入Illuminate\Support\Arr,然后重写EditAction的url方法:
namespace App\Filament\App\Resources\Organizations\Pages; use App\Filament\App\Resources\Organizations\OrganizationResource; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; use Illuminate\Support\Arr; class ViewOrganization extends ViewRecord { protected static string $resource = OrganizationResource::class; protected function getHeaderActions(): array { return [ EditAction::make() ->url(function () { // 获取当前活跃关联管理器的参数 $activeRelationManager = request()->query('activeRelationManager'); // 生成编辑页面的基础URL $editUrl = $this->getResource()::getUrl('edit', ['record' => $this->getRecord()]); // 如果存在活跃标签参数,拼接到URL后面 if ($activeRelationManager) { $editUrl .= '?' . Arr::query(['activeRelationManager' => $activeRelationManager]); } return $editUrl; }), ]; } }
关键逻辑说明
request()->query('activeRelationManager'):从当前请求中提取活跃关联管理器的参数值$this->getResource()::getUrl('edit', ['record' => $this->getRecord()]):生成当前记录的编辑页面基础URLArr::query():安全拼接查询参数,避免URL编码问题
修改完成后,当你在关联管理器的第二/第三个标签页点击编辑按钮时,activeRelationManager参数会被带到编辑页面,跳转后就能自动保持对应的标签活跃状态。
内容的提问来源于stack exchange,提问作者preyz
相关产品推荐
相关产品推荐

