Skip to main content

Field Properties

Field properties control the behavior and state of form fields. Laravel Custom Field provides fluent methods for setting properties like required, disabled, readonly, autofocus, and multiple.

Overview​

Properties are boolean or state-based attributes that control how fields behave. Unlike HTML attributes, properties often don't have values—they're either present or absent. The package provides trait-based methods for setting properties through the fluent builder API.

Available Properties​

Required​

Mark the field as required:

$field = CustomFieldBuilder::text()
->required()
->build();

Disabled​

Disable the field:

$field = CustomFieldBuilder::text()
->disabled()
->build();

Readonly​

Make the field readonly:

$field = CustomFieldBuilder::text()
->readonly()
->build();

Autofocus​

Set autofocus on the field:

$field = CustomFieldBuilder::text()
->autofocus()
->build();

Multiple​

Enable multiple selection (for select fields):

$field = CustomFieldBuilder::select()
->multiple()
->build();

Complete Examples​

Registration Form with Properties​

use JobMetric\CustomField\CustomFieldBuilder;

$form = [
'name' => CustomFieldBuilder::text()
->name('name')
->label('Full Name')
->required()
->autofocus()
->build(),

'email' => CustomFieldBuilder::email()
->name('email')
->label('Email')
->required()
->build(),

'country' => CustomFieldBuilder::select()
->name('country')
->label('Country')
->required()
->multiple()
->build(),

'notes' => CustomFieldBuilder::text()
->name('notes')
->label('Notes')
->readonly()
->value('This field is readonly')
->build(),
];

Conditional Properties​

function buildField(array $config) {
$builder = CustomFieldBuilder::{$config['type']}();

$builder->name($config['name'])
->label($config['label']);

if ($config['required'] ?? false) {
$builder->required();
}

if ($config['disabled'] ?? false) {
$builder->disabled();
}

if ($config['readonly'] ?? false) {
$builder->readonly();
}

if ($config['autofocus'] ?? false) {
$builder->autofocus();
}

if ($config['multiple'] ?? false && $config['type'] === 'select') {
$builder->multiple();
}

return $builder->build();
}

When to Use Properties​

Use properties when you need to:

  • Form Validation: Mark fields as required for validation
  • User Experience: Control field interactivity (disabled, readonly)
  • Accessibility: Set autofocus for better keyboard navigation
  • Data Collection: Enable multiple selection for select fields
  • Conditional Logic: Dynamically set properties based on business rules