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