我遇到了通知在灯丝 3 上出现两次的问题

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

我在 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(),但它对我不起作用。

laravel laravel-livewire laravel-filament filamentphp
1个回答
0
投票
成功创建或删除后,

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
        ]);
}
© www.soinside.com 2019 - 2024. All rights reserved.