Skip to content

arqel-dev/form — Referencia de API

Namespace Arqel\Form\. Builder fluido + 7 componentes de layout + generador de FormRequest.

Arqel\Form\Form (final)

Builder.

MétodoTipoDescripción
Form::make()selfFactory
schema(array)selfLista heterogénea de Fields + componentes de layout
columns(int)selfColumnas de la grid raíz (clamp ≥ 1)
model(class-string<Model>)selfHint de modelo
inline(bool)selfRenderiza inline en lugar de modal
disabled(bool)selfDisable global
getFields(): array<Field>flatten recursivodesciende en componentes de layout
toArray(): arraySchema serializadodiscriminator kind: 'field'|'layout'

Componentes de Layout

Arqel\Form\Layout\Component (abstract). Estado compartido: $schema, $columnSpan, $visibleIf, $canSee. El oráculo isVisibleFor(?Model) evalúa canSee antes que visibleIf.

ClaseSetters extra
Sectionheading, description, icon, collapsible, collapsed, columns, compact, aside (collapsed() implica collapsible())
Fieldsetlegend, columns
Gridcolumns(int|array<string,int>), gap
Columnsatajo semántico para Grid::columns(2)
Grouporientation('horizontal'|'vertical')
Tabstabs(array<Tab>), defaultTab(id), vertical()/horizontal()
Tabid, label, icon, badge(int|Closure) (Closures no-int se descartan)

Arqel\Form\FieldRulesExtractor (final)

Agrega rules/messages/attributes a través de una lista plana de Fields.

MétodoRetorna
extract(array<Field>)array<name, rules>
extractMessages(array<Field>)array<{name}.{rule}, message>
extractAttributes(array<Field>)array<name, attribute>

Las entradas que no son Field se descartan en silencio.

Arqel\Form\FormRequestGenerator (final)

Genera Store{Model}Request/Update{Model}Request desde un class-string de Resource.

php
$generator->generate(PostResource::class, 'create', 'App\\Http\\Requests'): string  // PHP source
$generator->write(PostResource::class, base_path('app/Http/Requests'), force: false): array<string>

Skip silencioso cuando el archivo existe y force=false. Las clases generadas delegan rules()/messages()/attributes() a FieldRulesExtractor, resolviendo el Resource vía el container.

Relacionado

Licencia MIT — construido con Inertia + React + Laravel.