Form
The Form class represents a built form instance. It contains all form configuration (attributes, tabs, groups, fields) and provides methods to render HTML and export to arrays.
Namespace
JobMetric\Form\Form
Overview
The Form class is the result of building a form with FormBuilder. It contains all the form configuration and provides methods to:
- Render HTML output
- Export to arrays (for APIs)
- Access form properties
- Get all custom fields
Properties
Action
public ?string $action;
The form action URL.
Method
public string $method;
The HTTP method (GET, POST, PUT, PATCH, DELETE).
Name
public string $name;
The form name attribute.
Enctype
public string $enctype;
The form enctype (application/x-www-form-urlencoded, multipart/form-data, text/plain).
Autocomplete
public bool $autocomplete;
Whether autocomplete is enabled.
Target
public string $target;
The form target (_self, _blank, _parent, _top).
Novalidate
public bool $novalidate;
Whether HTML5 validation is disabled.
Class
public string $class;
The form CSS class.
ID
public string $id;
The form ID attribute.
CSRF
public bool $csrf;
Whether CSRF token is included.
Hidden Custom Fields
public array $hiddenCustomField;
Array of hidden custom field instances.
Tabs
public array $tabs = [];
Array of tab instances.
Available Methods
Get All Custom Fields
Get all custom fields from the form:
$fields = $form->getAllCustomFields(true);
Parameters:
$includeHidden(bool): Whether to include hidden fields (default:true)
Returns: CustomField[] - Array of custom field instances
To HTML
Render the form as HTML:
$html = $form->toHtml();
// Or with values
$html = $form->toHtml(['name' => 'John', 'email' => 'john@example.com']);
Parameters:
$values(array): Optional array of field values to pre-fill
Returns: string - HTML string
Throws: Throwable - If rendering fails
To Array
Export form configuration to array:
$array = $form->toArray();
// Returns: [
// 'action' => '/users',
// 'method' => 'POST',
// 'name' => 'user-form',
// 'tabs' => [...],
// ...
// ]
Returns: array - Form configuration as array
Throws: Throwable - If serialization fails
Complete Examples
Render Form with Values
$form = FormBuilder::make()
->action('/users')
->method('POST')
->tab(function ($tab) {
$tab->id('personal')
->label('Personal Information')
->group(function ($group) {
$group->label('Basic Info')
->customField(function ($field) {
$field->text()
->name('name')
->label('Name')
->build();
})
->build();
})
->build();
})
->build();
// Render with pre-filled values
$html = $form->toHtml([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
Export for API
$form = FormBuilder::make()
->action('/products')
->method('POST')
->tab(function ($tab) {
$tab->id('details')
->label('Product Details')
->build();
})
->build();
return response()->json([
'form' => $form->toArray(),
]);
Get All Fields
$form = FormBuilder::make()
->action('/users')
->method('POST')
->hiddenCustomField(function ($field) {
$field->hidden()
->name('user_id')
->value(123)
->build();
})
->tab(function ($tab) {
$tab->id('personal')
->label('Personal Information')
->group(function ($group) {
$group->label('Basic Info')
->customField(function ($field) {
$field->text()
->name('name')
->label('Name')
->build();
})
->build();
})
->build();
})
->build();
// Get all fields including hidden
$allFields = $form->getAllCustomFields(true);
// Get only visible fields
$visibleFields = $form->getAllCustomFields(false);
When to Use Form
Use Form when you need to:
- Render HTML: Convert form definitions to HTML for display
- Export to Arrays: Serialize forms for API responses or storage
- Access Form Data: Get all custom fields, tabs, and groups
- Pre-fill Values: Render forms with existing data
- Form Validation: Extract field names and validation rules