跳到主要内容
版本:3.0

高级 actions

Action utility 注入

用于配置 Action 的大部分方法都接受函数作为参数,而不只是硬编码值:

Action::make('edit')
->label('Edit post')
->url(fn (): string => route('posts.edit', ['post' => $this->post]))

这就解锁了许多自定义的可能。

该包也可以在这些函数里面以参数的形式注入许多 utilities。所有接受函数作为参数的自定义方法,都可以注入 utilities。

这些注入的 utilities 需要使用特定的参数名。否则,Filament 不会知道注入的是什么。

注入当前模态框表单数据

如果你想要访问当前模型表单数据,请定义 $data 参数:

function (array $data) {
// ...
}

请注意,如果表单还未提交过,这就为空。

注入当前参数

如果你想访问被传入到该 Action 的当前参数,请定义 $arguments 参数:

function (array $arguments) {
// ...
}

注入当前 Livewire 组件实例

如果你想访问该 Action 从属的当前 Livewire 组件实例,请定义 $livewire 参数:

use Livewire\Component;

function (Component $livewire) {
// ...
}

注入当前 Action 实例

如果你想访问当前 action 实例,请定义 $action 参数:

function (Action $action) {
// ...
}

注入多个 utilities

参数使用反射动态注入,因此,你可以按任何顺序联合使用多个参数:

use Livewire\Component;

function (array $arguments, Component $livewire) {
// ...
}

从 Laravel 容器注入依赖

你可以像平常一样注入 Laravel 容器中的其他对象:

use Illuminate\Http\Request;

function (Request $request, array $arguments) {
// ...
}