Краткий обзор
Хотя Filament содержит практически все инструменты, необходимые для создания отличных приложений, иногда возникают потребности в добавлении собственной функциональности либо только для своего приложения, либо в виде распространения пакетов, которые другие разработчики могут включать в свои приложения. Именно поэтому Filament предлагает систему плагинов, которая позволяет расширять его функциональность.
Прежде чем перейти к рассмотрению, важно понять, в каких контекстах могут использоваться плагины. Существует два основных контекста:
- Плагины для панелей Filament: Это плагины, которые используются в конструкторах панелей Filament. Обычно они используются только для добавления функциональности при использовании внутри панели или как полноценная панель сама по себе. Примерами могут быть:
- Плагин, добавляющий определенную функциональность в набор инструментов в виде виджетов.
- Плагин, который добавляет набор ресурсов и/или функциональность в приложение, например, блог или функцию управления пользователями.
- Отдельные плагины Filament: Это плагины, которые используются в любом контексте вне Panel Builder. Примерами могут быть:
- Плагин, добавляющий пользовательские поля для использования в конструкторах форм Filament.
- Плагин, добавляющий пользовательские поля или фильтры в конструктор таблиц Filament.
Хотя это два разных понятия, о которых следует помнить при создании плагинов, они могут использоваться вместе в одном плагине. Они не обязательно должны быть взаимоисключающими.
Важные понятия
Прежде чем перейти к рассмотрению особенностей создания плагинов для Filament, важно понять несколько важных вещей. Перед созданием плагина необходимо ознакомиться со следующими понятиями:
Объект Plugin
В Filament версии 3 появилось понятие объекта Plugin, который используется для настройки плагина. Этот объект представляет собой простой PHP-класс, который расширяет класс Filament\Support\Plugin
. Этот класс используется для настройки плагина и является основной точкой входа для плагина. Он также используется для регистрации Resources и Icons, которые могут быть использованы плагином.
Хотя объект плагина очень полезен, он не является обязательным для создания плагина. Можно создавать плагины и без использования объекта плагина, как показано в руководстве "Создание плагина панели".
Информация:
Объект Plugin используется только для Panel Providers. Самостодостаточные плагины не используют этот объект. Все настройки для таких автономных плагинов должны выполняться в сервис-провайдере плагина.
Регистрация активов
Вся регистрация активов, включая CSS, JavaScript и Alpine Components, должна осуществляться через service provider плагина в методе packageBooted()
. Это позволит Filament зарегистрировать активы в Asset Manager и загрузить их при необходимости.
Создание плагина
Конечно, можно создавать плагины с нуля, но для быстрого начала работы рекомендуется использовать Filament Plugin Skeleton. Этот каркас включает в себя все необходимые шаблоны, которые помогут быстрее приступить к работе.
Использование шаблона для создания плагина Filament
Чтобы использовать этот шаблон, просто перейдите в репозиторий GitHub и нажмите кнопку "Использовать этот шаблон" (Use this template). В результате в вашем аккаунте будет создано новый репозиторий с кодом этого шаблона. После этого можно клонировать это репозиторий на свою машину. Как только код окажется на вашей машине, перейдите в корень проекта и выполните следующую команду:
php ./configure.php
Она задаст несколько вопросов для настройки плагина. После того как вы ответите на все вопросы, скрипт создаст для вас новый плагин, и вы сможете приступить к созданию нового удивительного расширения для Filament.
Обновление существующих плагинов
Поскольку каждый плагин сильно различается по объему использования и функциональности, не существует универсального подхода к обновлению существующих плагинов. Однако следует отметить одну вещь, которая касается всех плагинов, - это устаревание PluginServiceProvider
.
В вашем сервис-провайдере плагинов необходимо изменить его, чтобы вместо него расширить PackageServiceProvider
. Также необходимо добавить статическое свойство $name
в сервис-провайдер. Это свойство используется для регистрации плагина в Filament. Вот пример того, как может выглядеть сервис-провайдер:
class MyPluginServiceProvider extends PackageServiceProvider
{
public static string $name = 'my-plugin';
public function configurePackage(Package $package): void
{
$package->name(static::$name);
}
}
Полезные ссылки
Пожалуйста, прочитайте эти инструкции полностью, прежде чем обновлять свой плагин. Это поможет понять концепции и способы создания плагина.
- Управление активами Filament
- Разработка плагина для панели Filament
- Управление иконками в Filament
- Управление цветами в Filament
- Настройка стилей в Filament
Перевод с английского официальной документации Filament:
https://filamentphp.com/docs/3.x/forms/fields/rich-editor
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)