Skip to main content

DataBuilder

The DataBuilder class provides a fluent API for building data attributes (data-*) for form fields. Data attributes are useful for JavaScript integration, AJAX handling, and custom functionality.

Namespace​

JobMetric\CustomField\Attribute\Data\DataBuilder

Overview​

Data attributes allow you to attach custom data to HTML elements. The DataBuilder provides a fluent interface for adding data attributes to fields, making it easy to integrate with JavaScript frameworks and AJAX functionality.

Available Methods​

Name​

Set the name of the data attribute:

$data->name('ajax-url')

Value​

Set the value of the data attribute:

$data->value('/api/search')

Build​

Build the data attribute and add it to the collection:

$data->build()

Basic Usage​

Adding Data Attributes to Fields​

$field = CustomFieldBuilder::text()
->name('search')
->label('Search')
->data('ajax-url', '/api/search')
->data('min-length', 3)
->data('debounce', 300)
->build();

Using DataBuilder Directly​

use JobMetric\CustomField\Attribute\Data\DataBuilder;

$dataBuilder = new DataBuilder();
$dataBuilder->name('product-id')->value(123)->build();
$dataBuilder->name('update-price')->value(true)->build();

$dataAttributes = $dataBuilder->get();

Complete Examples​

AJAX Search Field​

$search = CustomFieldBuilder::text()
->name('search')
->label('Search Products')
->placeholder('Type to search...')
->data('ajax-url', route('api.products.search'))
->data('min-length', 3)
->data('debounce', 300)
->data('result-container', '#search-results')
->build();

Dynamic Form Field​

$field = CustomFieldBuilder::select()
->name('category')
->label('Category')
->data('parent-field', 'department')
->data('load-options-url', route('api.categories.by-department'))
->data('dependent-field', 'subcategory')
->build();

Image Upload with Preview​

$image = CustomFieldBuilder::image()
->name('avatar')
->label('Profile Picture')
->data('preview-container', '#avatar-preview')
->data('max-size', 2048)
->data('allowed-types', 'jpg,jpeg,png')
->data('crop-enabled', true)
->build();

When to Use DataBuilder​

Use the data builder when you need to:

  • JavaScript Integration: Pass data to JavaScript for dynamic behavior
  • AJAX Handling: Configure AJAX endpoints and parameters
  • Frontend Frameworks: Integrate with React, Vue, or Angular components
  • Custom Functionality: Add custom data for plugin or extension systems
  • Dynamic Behavior: Enable conditional field behavior based on data attributes