Компоненты
Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.
-
Разделы
# Основы
Для расширения возможностей можно добавлять собственные компоненты на основе абстрактных классов
MoonShine\IndexComponent, MoonShine\FormComponent или MoonShine\DetailComponent,
они будут отображаться под основной формой или под детальной информацией соответственно
Все кастомные компоненты необходимо зарегистрировать в методе components()
namespace MoonShine\Resources; class ArticleResource extends Resource{ //... public function components(): array { return [ // ... ]; } //...}
# Разрешения
Пример добавления компонента PermissionFormComponent
namespace MoonShine\Resources; use MoonShine\FormComponents\PermissionFormComponent; use MoonShine\Models\MoonshineUserRole;use MoonShine\Resources\Resource; class MoonShineUserResource extends Resource{ //... public function components(): array { return [ PermissionFormComponent::make('Permissions') ->canSee(fn() => auth()->user()->moonshine_user_role_id === MoonshineUserRole::DEFAULT_ROLE_ID) ]; } //...}
Если вы используете свою модель для аутентификации,
то вам нужно добавить в нее трейт MoonShine\Traits\Models\HasMoonShinePermissions
Если вы используете свой ресурс с выводом администраторов,
необходимо ресурсу добавить трейт MoonShine\Traits\Resource\WithUserPermissions
# История изменений
Чтобы в админ-панели отображалась история редактирования записей на основе пользователя, необходимо
модели, которая используется в ресурсе, добавить трейт MoonShine\Traits\Models\HasMoonShineChangeLog
namespace App\Models; use Illuminate\Database\Eloquent\Model;use MoonShine\Traits\Models\HasMoonShineChangeLog; class Article extends Model{ use HasMoonShineChangeLog; //...}
А также добавить компонент в ресурсе ChangeLogFormComponent
namespace MoonShine\Resources; use MoonShine\FormComponents\ChangeLogFormComponent; use MoonShine\Models\MoonshineUserRole;use MoonShine\Resources\Resource; class ArticleResource extends Resource{ // ... public function components(): array { return [ ChangeLogFormComponent::make('Change log') ->canSee(fn() => auth()->user()->moonshine_user_role_id === MoonshineUserRole::DEFAULT_ROLE_ID), ]; } // ...}