Поля

# Основы

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