OptionBuilder
The OptionBuilder class provides a fluent API for building options for select, radio, and checkbox fields. It supports both normal and pro modes, allowing you to build simple or complex option structures.
Namespace
JobMetric\CustomField\Option\OptionBuilder
Overview
Options are used in select, radio, and checkbox fields to provide choices to users. The OptionBuilder allows you to build options through a closure, making it easy to create multiple options with different configurations.
Available Methods
Mode
Set the mode for the option (normal or pro):
$opt->mode('pro')
Type
Set the type of the option (selectBox, radio, checkbox):
$opt->type('radio')
Name
Set the name of the option input:
$opt->name('plan')
Label
Set the label of the option:
$opt->label('Basic Plan')
Value
Set the value of the option:
$opt->value('basic')
Selected
Mark the option as selected:
$opt->selected()
Description
Set a description for the option:
$opt->description('Perfect for individuals')
Meta Info
Set meta information for the option:
$opt->metaInfo('$9.99/month')
Extra Content
Set extra content for the option:
$opt->extraContent('<span class="badge">Popular</span>')
Tag
Set a tag for the option:
$opt->tag('featured')
Build
Build the option and add it to the collection:
$opt->build()
Basic Usage
Simple Select Options
$select = CustomFieldBuilder::select()
->name('country')
->label('Country')
->options(function ($opt) {
$opt->label('Select Country')->value('')->build();
$opt->label('Iran')->value('IR')->build();
$opt->label('Germany')->value('DE')->build();
$opt->label('USA')->value('US')->build();
})
->build();
Radio Options (Normal Mode)
$radio = CustomFieldBuilder::radio()
->name('plan')
->options(function ($opt) {
$opt->label('Basic')->value('basic')->build();
$opt->label('Pro')->value('pro')->selected()->build();
$opt->label('Enterprise')->value('enterprise')->build();
})
->build();
Radio Options (Pro Mode)
$radio = CustomFieldBuilder::radio()
->name('plan')
->options(function ($opt) {
$opt->mode('pro')
->type('radio')
->name('plan')
->label('Basic Plan')
->value('basic')
->description('Perfect for individuals')
->metaInfo('$9.99/month')
->build();
$opt->mode('pro')
->type('radio')
->name('plan')
->label('Pro Plan')
->value('pro')
->description('Best for teams')
->metaInfo('$29.99/month')
->selected()
->extraContent('<span class="badge">Popular</span>')
->build();
})
->build();
Complete Examples
Dynamic Options from Database
$select = CustomFieldBuilder::select()
->name('category')
->label('Category')
->options(function ($opt) use ($categories) {
$opt->label('Select Category')->value('')->build();
foreach ($categories as $category) {
$opt->label($category->name)
->value($category->id);
if ($category->id === $selectedCategoryId) {
$opt->selected();
}
$opt->build();
}
})
->build();
Complex Radio Options with Metadata
$radio = CustomFieldBuilder::radio()
->name('payment_method')
->label('Payment Method')
->options(function ($opt) {
$opt->mode('pro')
->type('radio')
->name('payment_method')
->label('Credit Card')
->value('credit_card')
->description('Pay securely with your credit card')
->metaInfo('Visa, Mastercard, Amex')
->extraContent('<i class="icon-credit-card"></i>')
->build();
$opt->mode('pro')
->type('radio')
->name('payment_method')
->label('PayPal')
->value('paypal')
->description('Pay with your PayPal account')
->metaInfo('Fast and secure')
->extraContent('<i class="icon-paypal"></i>')
->selected()
->build();
})
->build();
When to Use OptionBuilder
Use the option builder when you need to:
- Select Fields: Build dropdown options
- Radio Buttons: Create radio button groups
- Checkboxes: Create checkbox groups
- Dynamic Options: Build options from database or API data
- Complex Options: Create options with descriptions, metadata, and extra content