Models Resources

Поля

Основы

Поля в большинстве случаев относятся к полям таблиц из базы данных. В рамках 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'),
];
}
 
//...
}