Skip to content

arqel-dev/form — API Reference

Namespace Arqel\Form\. Fluent builder + 7 layout components + FormRequest generator.

Arqel\Form\Form (final)

Builder.

MethodTypeDescription
Form::make()selfFactory
schema(array)selfHeterogeneous list of Fields + Layout components
columns(int)selfRoot grid columns (clamp ≥ 1)
model(class-string<Model>)selfModel hint
inline(bool)selfRenders inline instead of modal
disabled(bool)selfGlobal disable
getFields(): array<Field>recursive flattendescends into layout components
toArray(): arraySerialized schemadiscriminator kind: 'field'|'layout'

Layout Components

Arqel\Form\Layout\Component (abstract). Shared state: $schema, $columnSpan, $visibleIf, $canSee. Oracle isVisibleFor(?Model) evaluates canSee before visibleIf.

ClassExtra setters
Sectionheading, description, icon, collapsible, collapsed, columns, compact, aside (collapsed() implies collapsible())
Fieldsetlegend, columns
Gridcolumns(int|array<string,int>), gap
Columnssemantic shortcut for Grid::columns(2)
Grouporientation('horizontal'|'vertical')
Tabstabs(array<Tab>), defaultTab(id), vertical()/horizontal()
Tabid, label, icon, badge(int|Closure) (non-int Closures dropped)

Arqel\Form\FieldRulesExtractor (final)

Aggregates rules/messages/attributes across a flat list of Fields.

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

Non-Field entries are silently dropped.

Arqel\Form\FormRequestGenerator (final)

Generates Store{Model}Request/Update{Model}Request from a Resource class-string.

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>

Silent skip when the file exists and force=false. The generated classes delegate rules()/messages()/attributes() to FieldRulesExtractor, resolving the Resource via the container.

MIT License — built with Inertia + React + Laravel.