Ресурсы в Filament
В админ-панели почти всё крутится вокруг записей в базе: посты, заказы, пользователи. Список постов открывается по адресу /admin/posts. Одна модель Eloquent описывает строку таблицы, а человеку нужны экраны, чтобы увидеть список, добавить запись и поправить уже существующую.
Ресурс - это описание таких экранов для одной модели. Он связывает модель с интерфейсом панели: что показать в списке, какие поля открыть в форме, по каким адресам ходить между экранами. У каждого ресурса появляется свой пункт в боковом меню панели.
Типичный ресурс покрывает три задачи. Список выводит строки модели таблицей на одной странице. Создание даёт пустую форму и сохраняет новую запись. Правка открывает ту же форму для уже сохранённой строки и записывает изменения обратно в базу.
Внутри ресурса работу делят между несколькими классами. Один класс ресурса регистрирует модель, страницы и связь с меню. Отдельно лежит описание формы: им собирают экран создания и экран правки. Отдельно - описание таблицы: им собирают список записей.
Filament не рисует эти экраны с нуля в каждом проекте. Пакет даёт готовый каркас страниц, а мы указываем, какие данные модели куда вывести. Модель и миграции остаются в Laravel, ресурс живёт в каталоге панели и описывает интерфейс для этой модели.
Когда в приложении несколько сущностей, для каждой заводят свой ресурс. Пункты меню складываются в набор экранов, но код одной модели не смешивается с другой: форма постов не тянет за собой поля заказов.
Со всем этим мы и будем разбираться в рамках данного раздела.