Buy

Customize Template for One Field

We already customized the template used for every field whose data type is id. But you can also go deeper, and customize the way that just one specific field is rendered.

For example, let's say we need to customize how the "full name" field is rendered. No problem: in config.yml, find User, list, fields, and change fullName to the expanded configuration. To control the template add... surprise! A template option set to, how about, _field_user_full_name.html.twig:

150 lines app/config/config.yml
... lines 1 - 80
easy_admin:
... lines 82 - 91
entities:
... lines 93 - 140
User:
... line 142
list:
fields:
... lines 145 - 147
- { property: 'fullName', template: '_field_user_full_name.html.twig' }
... lines 149 - 150

Copy that name. It expects this to live in the standard easy_admin directory. Create it there!

Since this is a template for one field, it will have access to the User object as an item variable. And that makes life easy. Add if item.isScientist - that's a property on User - then add a cool graduation cap:

6 lines app/Resources/views/easy_admin/_field_user_full_name.html.twig
{% if item.isScientist %}
<i class="fa fa-graduation-cap"></i>
{% endif %}
... lines 4 - 6

Below, print the full name. To do that, you can use a value variable. Pipe it through |default('Stranger'), just in case the user doesn't have any name data:

6 lines app/Resources/views/easy_admin/_field_user_full_name.html.twig
{% if item.isScientist %}
<i class="fa fa-graduation-cap"></i>
{% endif %}
{{ value|default('Stranger') }}

Try it! Yes! We now know how to customize entire page templates - like list.html.twig, templates for a specific field type, or the template for just one field.

Time to move into forms!

Leave a comment!