Как использовать отношения в MoonShine?
Eloquent отношения в MoonShine реализуются через соответствующие одноименные поля.
MoonShine поддерживает все возможные отношения: BelongsTo
, BelongsToMany
, HasOne
, HasMany
и другие.
Рассмотрим использование полей отношений на примере BelongsTo
. Например, у вас есть модели Post
и Author
, где каждый пост принадлежит одному автору.
use Illuminate\Database\Eloquent\Relations\BelongsTo; // В модели Postpublic function author(): BelongsTo{ return $this->belongsTo(Author::class);}
use MoonShine\Laravel\Fields\Relationships\BelongsTo; // В MoonShine PostResourcepublic function formFields(): array{ return [ // ... BelongsTo::make('Author', 'author', AuthorResource::class), ];}
Подробнее о каждом типе связи читайте в разделах соответствующих полей в документации.
Как работать с JSON полями?
Смотрите раздел поля Json.
Как добавить стили или классы к полям или компонентам?
Как использовать реактивность полей?
Общая информация о реактивности полей.
Вариант применение реактивности на примере поля Slug.
Как настроить права доступа для разных ролей пользователей?
На тему авторизации читайте соответствующий раздел документации.
Для интеграции управления доступом на основе ролей в MoonShine, вы можете использовать сторонний пакет moonshine-roles-permissions.
Как правильно использовать события ресурса (beforeCreating, afterCreated и т.п.)?
Смотрите ModelResource > События.
Как настроить фильтрацию в ресурсе?
Смотрите ModelResource > Фильтры.
Как реализовать сортировку записей перетаскиванием?
Компонент TableBuilder имеет метод reorderable(), который добавляет возможность сортировки строк перетаскиванием.
Вот рецепт реализации сортировки перетаскиванием в ресурсе.
Как кастомизировать внешний вид админ-панели?
Есть много способов изменить внешний вид шаблонов в MoonShine. Читайте разделы “Внешний вид” в документации.
Как сохранить ID авторизованного пользователя при создании записи?
В следующем примере по умолчанию автором назначается текущий аутентифицированный пользователь.
public function formFields(): array{ return [ // ... BelongsTo::make('Author', resource: UserResource::class) ->default( request()->user() ), ];}
Также можно добавить скрытое поле и заполнить его значением ID пользователя из реквеста.
Hidden::make('Author') ->fill( auth()->id() )
Так же в разделе ModelResource > События показан пример добавления поля в реквест через события.
Как правильно работать с дробными числами в поле Number?
Достаточно указать нужных шаг с помощью метода step(), например "0.01".
Как настроить асинхронный поиск в Select полях?
Смотрите раздел Select.
Как изменить или скрыть элементы меню в зависимости от прав пользователя?
Смотрите рецепт.
Как изменить формат даты в полях Date?
Смотрите раздел поля Date.
Как изменить логотип и фавикон в админ-панели?
Логотип можно изменить в конфигурации.
Фавикон можно заменить в Layout
в компоненте Favicon.
Как реализовать множественную загрузку файлов?
Смотрите раздел поля File.
Как настроить импорт/экспорт данных в CSV или Excel?
Смотрите раздел Импорт / Экспорт.
Как работать с Markdown полями в MoonShine?
Вы можете воспользоваться пакетом moonshine-software/easymde.
Как кастомизировать хлебные крошки в MoonShine?
Хлебные крошки можно переопределять на отдельных страницах.
Рецепт, как изменять хлебные крошки из ресурса для отдельных страниц.
Как убрать массовые действия и чекбоксы с индексной страницы?
Как настроить глобальный поиск в MoonShine?
Как реализовать кастомные поля ввода в MoonShine?
Достаточно расширить базовый класс Field
или класс любого из имеющихся полей и добавить\переопределить нужный вам функционал.
Например, подключить другой view.
Как использовать QueryTags в MoonShine?
Как добавить или изменить кнопки в FormBuilder?
components/form-builder#buttons.
Как настроить отображение полей в зависимости от значения другого поля?
fields/basic-methods#show-when.
Как изменить или удалить стандартные кнопки действий в ресурсе?
Как работать с полями Enum в MoonShine?
Как добавить кастомные страницы в MoonShine?
Как работать с мягким удалением (soft delete) в MoonShine?
Также есть статья с более подробным описанием.
Как настроить кастомные маршруты в MoonShine?
Как работать с полем Switcher в формах и фильтрах?
Switcher
- это тот же Checkbox
, только в другом визуальном оформлении.
Как реализовать кастомную аутентификацию в MoonShine?
security/authentication#customization.
Как настроить отображение Badge в зависимости от значения?
У полей есть метод badge()
, который может принимать замыкание, возвращающее код цвета: fields/basic-methods#badge.
Так же смотрите раздел поля Enum.