Формы
Страницы создания и редактирования записей — интуитивно понятные формы, которые система генерирует автоматически на основе конфигурации ресурса. Формы включают все необходимые элементы ввода и выполняют валидацию данных перед сохранением.
Система предоставляет три метода разной степени специфичности для настройки полей.

fields()
Обязательный метод. По умолчанию система собирает и таблицы, и формы из этого метода.
public function fields(): array
{
return [
ID::make('ID'),
Text::make('title', 'Название статьи')
->sortable(),
Toggle::make('is_published', 'Опубликовано')
->editable(),
DateTime::make('created_at', 'Дата создания')
->format('d.m.Y H:i')
->sortable(),
];
}
fieldsForCreate()
Необязательный метод. Если определён — на странице создания записи будут использоваться поля из него, а не из fields().
public function fieldsForCreate(): array
{
return [
Text::make('email', 'Email')
->required(),
Text::make('name', 'Имя')
->required(),
Password::make('password', 'Пароль')
->required(),
];
}
fieldsForUpdate()
Необязательный метод. Если определён — на странице редактирования записи будут использоваться поля из него, а не из fields().
public function fieldsForUpdate(): array
{
return [
ID::make(),
Text::make('email', 'Email')
->required(),
Text::make('name', 'Имя')
->required(),
];
}
Класс-схема формы
Форму можно вынести в отдельный класс-схему и подключить через статическое свойство $form. Схема наследуется от Frame\Laravel\Schemas\Form и, помимо fields(), управляет раскладкой, кросс-полевой валидацией (rules() / messages()), а при необходимости — раздельными наборами полей для создания и редактирования.
class ArticleResource extends Resource
{
public static ?string $form = ArticleForm::class;
}
Мастер (wizard)
Раскладку формы задаёт метод layout(), возвращающий FormLayout:
В режиме мастера каждая панель — это шаг. Шаги настраиваются методами панели: ->description() (подпись шага), ->optional() (пропускаемый шаг), ->showWhen('field') (условный шаг — появляется только когда поле заполнено).
use Frame\Laravel\Enums\FormLayout;
use Frame\Laravel\Schemas\Form;
class AddressForm extends Form
{
public function layout(): FormLayout
{
return FormLayout::WIZARD;
}
public function fields(FrameRequest $request): array
{
return [
Panel::make('Адрес', [
Text::make('address', 'Улица, дом')->required(),
])->description('С чего начнём — сам адрес'),
Panel::make('Локация', [
Select::make('country', 'Страна')->options([...]),
Select::make('city', 'Город')
->optionsWhen('country', [...]), // зависимые опции внутри шага
])->description('Страна и город'),
// Условный и необязательный шаг: появляется после выбора страны.
Panel::make('Привязка', [...])
->description('К чему привязать адрес (необязательно)')
->optional()
->showWhen('country'),
];
}
}