Filament PHP:通过 Action 显示 RelationManager 表

问题描述 投票:0回答:1

当我在事件资源中选择事件时,有什么方法可以显示编辑页面底部出现的表格吗? 我在 EventResource 类中有一个 ParticipantRelationManager,它工作得很好,我只是想从列表页面以模式显示表格。

为此,我尝试创建一个自定义操作来触发我想要显示表格的模式:

Tables\Actions\Action::make('ShowParticipants')
                    ->action(fn (Event $record) => $record->participants())
                    ->modalContent(view('filament.pages.view-participants')),

然后在公共静态函数 getPages() 中我返回:

'view-participants' => Pages\ViewParticipants::route('/{record}/view-participants'),

我创建了一个名为 ViewParticipants.php 的类:

namespace App\Filament\Resources\EventResource\Pages;

use Filament\Resources\Pages\Page;
use App\Models\Event;
use Livewire\Component;

class ViewParticipants extends Page
{
    public static string $view = 'filament.pages.view-participants';

    public function viewData(array $data): array
    {
        $event = Event::findOrFail($data['record']);

        return [
            'participants' => $event->participants,
        ];
    }
}

和刀片视图:

<x-filament::page>


@dd('Hello')


</x-filament::page>

我可以通过模式访问该页面,因此会显示@dd('Hello'),但我不知道如何从关系管理器检索数据。

非常感谢。

laravel laravel-livewire laravel-filament filamentphp
1个回答
1
投票

您可以创建一个新的小部件作为表格列表。

并用

TableWidget
扩展,所以在你的代码中,它将是

use Filament\Widgets\TableWidget as PageWidget;

class YourWidgetClass extends PageWidget
{

}

现在,使用

 在您的 
ViewParticipants

类中注册这个小部件
protected function getHeaderWidgets(): array
{
    return [
        YourWidgetClass::class,
    ];
}

您可以在页眉“getHeaderWidgets()”和页脚“getFooterWidgets()”页面添加小部件

您还可以使用小部件类中的覆盖

Filament\Widgets\TableWidget::getTableQuery()
自定义表查询。

希望这会有所帮助。

快乐编码!..

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.