Page block attributes¶
A block has attributes that the editor fills in when adding the block to a Page.
Clear the persistence cache
Persistence cache must be cleared after any modifications have been made to the block config in Page Builder, such as adding, removing or altering the page blocks, block attributes, validators or views configuration.
To clear the persistence cache run ./bin/console cache:pool:clear [cache-pool]
command.
The default cache-pool is named cache.tagaware.filesystem
.
The default cache-pool when running redis is named cache.redis
.
If you have customized the persistence cache configuration, the name of your cache pool might be different.
In prod mode, you also need to clear the symfony cache by running ./bin/console c:c
.
In dev mode, the Symfony cache is rebuilt automatically.
Each block can have the following properties:
Attribute | Description |
---|---|
type |
Attribute type. |
name |
(Optional) The displayed name for the attribute. You can omit it, block identifier is then used as the name. |
value |
(Optional) The default value for the attribute. |
category |
(Optional) The tab where the attribute is displayed in the block edit modal. |
validators |
(Optional) Validators checking the attribute value. |
options |
(Optional) Additional options, dependent on the attribute type. |
Block attribute types¶
The following attribute types are available:
Type | Description | Options |
---|---|---|
integer |
Integer value | - |
string |
String | - |
url |
URL | - |
text |
Text block | - |
richtext |
Rich text block (see creating RichText block) | - |
embed |
Embedded content item | - |
select |
Drop-down with options to select | choices lists the available options in label: value formmultiple , when set to true, allows selecting more than one option. |
checkbox |
Checkbox | Selects available option if value: true . |
multiple |
Checkbox(es) | choices lists the available options in label: value form. |
radio |
Radio buttons | choices lists the available options in label: value form. |
locationlist |
Location selection | - |
contenttypelist |
List of content types | - |
schedule_events ,schedule_snapshots ,schedule_initial_items ,schedule_slots ,schedule_loaded_snapshot |
Used in the Content Scheduler block | - |
nested_attribute |
Defines a group of attributes in a block. | attributes - a list of attributes in the group. The attributes in the group are configured as regular attributes. multiple , when set to true. New groups are added dynamically with the + Add button. |
When you define attributes, you can omit most keys as long as you use simple types that don't require additional options:
1 2 3 4 |
|
embed
and locationlist
use the Universal Discovery Widget (UDW).
When creating a block with these two types you can configure the UDW behavior.
For more information, see Create custom page block / Add edit template
Custom attribute types¶
You can create custom attribute type to add to Page blocks.
A custom attribute requires attribute type class, a mapper and a template.
Block attribute type¶
First, create the attribute type class.
It can extend one of the types available in fieldtype-page/src/lib/Form/Type/BlockAttribute/
.
You can also use one of the built-in Symfony types,
for example AbstractType
for any custom type or IntegerType
for numeric types.
To define the type, create a src/Block/Attribute/MyStringAttributeType.php
file:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
The attribute uses AbstractType
(line 5) and TextType
(line 6).
Adding getBlockPrefix
(line 15) returns a unique prefix key for a custom template of the attribute.
Mapper¶
At this point, the attribute type configuration is complete, but it requires a mapper.
Depending on the complexity of the type, you can use a GenericFormTypeMapper
or create your own.
Generic mapper¶
For a generic mapper, add a new service definition to config/services.yaml
:
1 2 3 4 5 6 7 |
|
Custom mapper¶
To use a custom mapper, create a class that inherits from Ibexa\Contracts\FieldTypePage\FieldType\Page\Block\Attribute\FormTypeMapper\AttributeFormTypeMapperInterface
,
for example in src/Block/Attribute/MyStringAttributeMapper.php
:
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 30 31 32 33 34 35 36 |
|
Then, add a new service definition for your mapper to config/services.yaml
:
1 2 3 |
|
Edit templates¶
Next, configure a template for the attribute edit form by creating a templates/themes/admin/custom_form_templates.html.twig
file:
1 2 3 4 |
|
Add the template to your configuration under the system.<scope>.page_builder_forms
configuration key:
1 2 3 4 5 6 |
|
Custom attribute configuration¶
Now, you can create a block containing your custom attribute:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Nested attribute configuration¶
The nested_attribute
attribute is used when you want to create a group of attributes.
First, make sure you have configured the attributes you want to use in the group.
Next, provide the configuration. See the example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
To set validation for each nested attribute:
1 2 3 4 5 6 7 8 9 10 |
|
Validators can be also set on a parent attribute (group defining level), it means all validators apply to each nested attribute:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Moving attributes between groups
If you move an attribute between groups or add an ungrouped attribute to a group, the block values are removed.
Help messages for form fields¶
With the help
, help_attr
, and help_html
field options, you can define help messages for fields in the Page block.
You can set options with the following configuration:
1 2 3 4 5 6 7 8 9 10 11 |
|
help
- defines a help message which is rendered below the field.help_attr
- sets the HTML attributes for the element which displays the help message.help_html
- set this option totrue
to disable escaping the contents of thehelp
option when rendering in the template.
Help message in nested attributes¶
You can set the options for root or nested attribute, see the example configuration:
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 30 31 32 33 34 35 36 |
|