Fields
Minimal example
use ForestAdmin\AgentPHP\DatasourceCustomizer\CollectionCustomizer;
use ForestAdmin\AgentPHP\DatasourceCustomizer\Decorators\Computed\ComputedDefinition;
use ForestAdmin\AgentPHP\DatasourceToolkit\Components\Query\ConditionTree\Operators;
$forestAgent->customizeCollection(
'User',
function (CollectionCustomizer $builder) {
$builder->addField(
'fullName',
new ComputedDefinition(
columnType: 'String',
dependencies: ['firstName', 'lastName'],
values: fn ($records) => collect($records)->map(fn ($record) => $record['firstName'] . ' ' . $record['lastName']),
)
)
// Make it writable
->replaceFieldWriting(
'fullName',
function($value) {
[$firstName, $lastName] = explode(' ', $value);
return compact('firstName', 'lastName');
}
)
// Add validators
->addFieldValidation('fullName', Operators::PRESENT)
->addFieldValidation('fullName', Operators::SHORTER_THAN, 30)
->addFieldValidation('fullName', Operators::GREATER_THAN, 2)
// Make it filterable and sortable
->emulateFieldFiltering('fullName')
->emulateFieldSorting('fullName')
// Remove previous fields
->removeField('firstName', 'lastName');
}
);
Last updated