GroupBuilder
The GroupBuilder class provides a fluent API for building groups within tabs. Groups organize related fields together with labels and descriptions, making forms easier to understand and navigate.
Namespace
JobMetric\Form\Group\GroupBuilder
Overview
The GroupBuilder allows you to create groups that contain custom fields. Each group can have a label and description, providing visual separation and logical organization for form fields.
Available Methods
Label
Set the group label:
$group->label('Basic Information');
Parameters:
$label(string): The group label
Returns: static - Returns the builder for method chaining
Required: Yes - Label is required when building
Description
Set the group description:
$group->description('Enter your basic information');
Parameters:
$description(string): The group description
Returns: static - Returns the builder for method chaining
Custom Field
Add a custom field to the group:
$group->customField(function ($field) {
$field->text()
->name('name')
->label('Name')
->required()
->build();
});
Parameters:
$callable(Closure): A closure that receives aCustomFieldBuilderinstance
Returns: static - Returns the builder for method chaining
Build
Build the group instance:
$groupInstance = $group->build();
Returns: Group - The built group instance
Throws: InvalidArgumentException - If group label is missing
Complete Examples
Simple Group
$group = GroupBuilder::make()
->label('Basic Information')
->description('Enter your basic details')
->customField(function ($field) {
$field->text()
->name('name')
->label('Full Name')
->required()
->build();
})
->customField(function ($field) {
$field->email()
->name('email')
->label('Email Address')
->required()
->build();
})
->build();
Group with Multiple Fields
$group = GroupBuilder::make()
->label('Contact Information')
->customField(function ($field) {
$field->tel()
->name('phone')
->label('Phone Number')
->build();
})
->customField(function ($field) {
$field->text()
->name('address')
->label('Address')
->build();
})
->customField(function ($field) {
$field->select()
->name('country')
->label('Country')
->options(function ($opt) {
$opt->label('Iran')->value('IR')->build();
$opt->label('Germany')->value('DE')->build();
})
->build();
})
->build();
When to Use GroupBuilder
Use GroupBuilder when you need to:
- Organize Related Fields: Group fields that belong together logically
- Visual Separation: Create visual sections within tabs
- Add Context: Provide labels and descriptions for field groups
- Improve UX: Make forms easier to understand and navigate
- Maintain Structure: Keep form organization consistent