我在 laravel 10 中使用filament 3,所以问题是当我在添加数据条目后使用 after() 时,会出现 2 个通知,第一个是默认通知,然后是我创建的通知,我该如何解决这个问题?
布局火线
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="application-name" content="{{ config('app.name') }}">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ config('app.name') }}</title>
<style>
[x-cloak] {
display: none !important;
}
</style>
@filamentStyles
@vite('resources/css/app.css')
</head>
<body class="antialiased">
{{ $slot }}
@livewire('notifications')
@filamentScripts
@vite('resources/js/app.js')
</body>
</html>
类组件TableList.php
<?php
namespace App\Livewire\Pages;
use App\Models\Movie;
use App\Services\MovieSchema;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Tables\Concerns\InteractsWithTable;
use Filament\Forms\Contracts\HasForms;
use Filament\Tables\Contracts\HasTable;
use Filament\Tables\Table;
use Filament\Tables;
use Filament\Notifications\Notification;
use Livewire\Component;
class TableList extends Component implements HasTable, HasForms
{
use InteractsWithTable, InteractsWithForms;
public function table(Table $table): Table
{
return $table
->query(Movie::query())
->columns([
Tables\Columns\TextColumn::make('title')->searchable(),
Tables\Columns\TextColumn::make('category.name'),
Tables\Columns\TextColumn::make('director'),
Tables\Columns\TextColumn::make('release')->date()->sortable(),
])
->actions([
Tables\Actions\EditAction::make()
->form(MovieSchema::schema()),
Tables\Actions\DeleteAction::make()->action(function (Movie $movie) {
$movie->delete();
Notification::make()
->title("Hapus Berhasil : {$movie->title}")
->success()
->send();
})
])
->headerActions([
Tables\Actions\CreateAction::make()->model(Movie::class)
->modal()
->form(MovieSchema::schema())
->after(function () {
Notification::make()
->title("Tambah Berhasil")
->success()
->send();
})
]);
}
public function render()
{
return view('livewire.pages.table-list');
}
}
我希望出现的通知只是我创建的1个,我可以关闭的默认通知,我试图找到一篇文章,并被建议使用->disableNotifications(),但它对我不起作用。
Filament
会自动显示通知,并且您将在 after()
回调中添加额外的自定义通知。要解决此问题,您需要显式禁用 Filament 提供的默认通知。您可以使用操作上的 ->disableNotifications()
方法来完成此操作。
public function table(Table $table): Table
{
return $table
->query(Movie::query())
->columns([
Tables\Columns\TextColumn::make('title')->searchable(),
Tables\Columns\TextColumn::make('category.name'),
Tables\Columns\TextColumn::make('director'),
Tables\Columns\TextColumn::make('release')->date()->sortable(),
])
->actions([
Tables\Actions\EditAction::make()
->form(MovieSchema::schema()),
Tables\Actions\DeleteAction::make()
->action(function (Movie $movie) {
$movie->delete();
Notification::make()
->title("Hapus Berhasil : {$movie->title}")
->success()
->send();
})
->disableNotifications() // Disable the default notification
])
->headerActions([
Tables\Actions\CreateAction::make()
->model(Movie::class)
->modal()
->form(MovieSchema::schema())
->after(function () {
Notification::make()
->title("Tambah Berhasil")
->success()
->send();
})
->disableNotifications() // Disable the default notification
]);
}