Create custom Form field ¶
You can extend the Form Builder by adding new Form fields or modifying existing ones. Define new form fields in configuration.
Configure Form field¶
For example, to create a Country Form field in the "Custom form fields" category, provide the following configuration:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Available attribute types are:
Type | Description |
---|---|
string |
String |
text |
Text block |
integer |
Integer number |
url |
URL |
multiple |
Multiple choice |
select |
Dropdown |
checkbox |
Checkbox |
location |
Content Location |
radio |
Radio button |
action |
Button |
choices |
List of available options |
Each type of Form field can have validators of the following types:
required
min_length
max_length
min_choices
max_choices
min_value
max_value
regex
upload_size
extensions
Create mapper¶
New types of fields require a mapper which implements the Ibexa\Contracts\FormBuilder\FieldType\Field\FieldMapperInterface
interface.
To create a Country field type, implement the FieldMapperInterface
interface in src/FormBuilder/Field/Mapper/CountryFieldMapper.php
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Then, register the mapper as a service:
1 2 3 4 5 6 7 |
|
Now you can go to Back Office and build a new form. You should be able to see the new section in the list of available fields:
And a new Country Form field:
Modify existing Form fields¶
Field or field attribute definition can be modified by subscribing to one of the following events:
ibexa.form_builder.field.<FIELD_ID>
ibexa.form_builder.field.<FIELD_ID>.<ATTRIBUTE_ID>
The following example adds a custom
string attribute to single_line
field definition.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Register this subscriber as a service:
1 2 3 4 5 |
|
Access Form field definitions¶
Field definitions are accessible through:
Ibexa\FormBuilder\Definition\FieldDefinitionFactory
in the back end- global variable
ibexa.formBuilder.config.fieldsConfig
in the front end