Основы
Поля в большинстве случаев относятся к полям таблиц из базы данных. В рамках CRUD они будут отображаться на главной странице раздела (ресурса) со списком и на странице для создания и редактирования записей. В админ-панели MoonShine есть множество типов полей, которые охватывают все возможные требования! Также охватываются все возможные отношения в Laravel и для удобства называются так же, как методы отношений: BelongsTo
, BelongsToMany
, HasOne
, HasMany
, HasOneThrough
, HasManyThrough
, MorphOne
, MorphMany
.
Добавлять поля в ModelResource легко!
По умолчанию
В ModelResource по умолчанию необходимо в методе fields()
вернуть массив со всеми Полями.
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Fields\ID;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; //... public function fields(): array { return [ ID::make(), Text::make('Title'), ]; } //...}
Разделение полей
Иногда возникает необходимость исключить или изменить порядок некоторых полей на странице индекса или детальной странице. Для этого можно использовать методы, которые позволяют переопределить поля для соответствующих страниц: indexFields()
, formFields()
или detailFields()
.
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Fields\ID;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; //... public function indexFields(): array { return [ ID::make(), Text::make('Title'), ]; } public function formFields(): array { return [ ID::make(), Text::make('Title'), Text::make('Subtitle'), ]; } public function detailFields(): array { return [ Text::make('Title', 'title'), Text::make('Subtitle'), ]; } //...}