Компоненты
Вы просматриваете документацию старой версии 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), ]; } // ...}