DevGang
Авторизоваться

Как продлить ресурс Filament

В этой статье мы рассмотрим, как расширить ресурс плагина, а также другие ресурсы Filament.

Проверка конфигурации плагина

Допустим, мы установили плагин, который регистрирует ресурсы, например журнал аутентификации Filament, и хотим расширить доступный ресурс AuthenticationLogResource.php, чтобы добавить некоторые настройки в наше приложение.

Для начала нам нужно проверить, позволяет ли плагин настраивать свои ресурсы. Мы можем взглянуть на файл конфигурации плагина, чтобы узнать, сможем ли мы найти ключ ресурсов или что-то подобное, указывающее исходный ресурс(ы):

// config/filament-authentication-log.php

'resources' => [
    'AutenticationLogResource' => \Tapp\FilamentAuthenticationLog\Resources\AuthenticationLogResource::class,
],

А в классе плагина (класс, используемый для взаимодействия с файлом конфигурации панели) мы можем проверить, что зарегистрированные ресурсы соответствуют тем, которые определены в файле конфигурации:

Hапример: /src/FilamentAuthenticationLogPlugin.php

public function register(Panel $panel): void
{
    $panel
        ->resources(
            config('filament-authentication-log.resources')
        );
}

Теперь, когда мы подтвердили, что плагин предоставляет такую ​​конфигурацию, давайте расширим ресурс!

Расширение ресурса плагина

Мы готовы написать собственный ресурс AuthenticationLogResource.php, расширяющий ресурс плагина! Мы можем записать его в каталог ресурсов Filament нашего проекта (app/Filament/Resources):

namespace App\Filament\Resources;

use Tapp\FilamentAuthenticationLog\Resources\AuthenticationLogResource as BaseAuthenticationLogResource;

class AuthenticationLogResource extends BaseAuthenticationLogResource
{
    // your custom code here
}

Если вы еще этого не сделали, теперь вы можете опубликовать файл конфигурации плагина, чтобы мы могли дать указание Filament использовать наш собственный ресурс. Ниже приведен пример использования нашего локального класса App\Filament\Resources\AuthenticationLogResource, который мы только что написали в файле config/filament-authentication-log.php проекта:

'resources' => [
    'AutenticationLogResource' => \App\Filament\Resources\AuthenticationLogResource::class,
],

Кроме того, мы можем добавить соответствующие страницы создания, редактирования, списка и просмотра (если они используются) в наш локальный проект. Вот пример страницы списка:

namespace App\Filament\Resources\AuthenticationLogResource\Pages;

use Filament\Resources\Pages\ListRecords;

class ListAuthenticationLogs extends ListRecords
{
    // ...
}

Осталось еще одно: в пользовательском классе ресурсов проекта нам нужно переопределить метод getPages(), чтобы использовать нашу страницу вместо страницы плагина:

use App\Filament\Resources\AuthenticationLogResource\Pages;

public static function getPages(): array
{
    return [
        'index' => Pages\ListAuthenticationLogs::route('/'),
    ];
}

Теперь можно использовать наш новый класс ресурсов.

Этот же метод можно применить и для расширения других ресурсов Filament.

Приятного кодирования и до встречи в следующий раз!

Источник:

#PHP
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу