This bundle offers functionality for adding the HTML5 attribute autocomplete
to form fields in the Contao CMS.
The autocomplete
attribute is used in the following cases:
- Browsers use it for presenting different autocompletion options for fields wth different
autocomplete
value set. - Screen readers verbalize it, hence it's a good practice to have them set.
- adds the HTML5
autocomplete
attribute to form fields generated by usingWidget::parse()
(the hookgetAttributesFromDca
is used)
- Install via composer:
composer require heimrichhannot/contao-form-autocomplete-bundle
.
There are the following supported ways to add the autocomplete
value to a field (the priority is descending):
- The DCA definition has it set in its
eval
section:// tl_my_table.php 'myFirstnameField' => [ 'label' => &$GLOBALS['TL_LANG']['tl_my_table']['myFirstnameField'], // ... 'eval' => [ 'autocomplete' => 'given-name' ] ]
- If no DCA definition is found or relevant in the given context (e.g. in form generator there is no DCA context), the bundle tries to guess based on the mapping
of field name to
autocomplete
value defined in this bundle (src/Resources/config/config.yml
). You can extend this mapping in your project (see chapter below).
Simply add the following code according to your needs to your app/config/config.yml
(Contao 4.4) or config/config.yml
:
huh_form_autocomplete:
mapping:
given-name:
synonyms:
- my-new-value
new-autocomplete-name:
synonyms:
- brand-new-autocomplete-name
The algorithm is currently very simple. Basically it works the following way:
- If an
autocomplete
value is set in the field's DCA, it's used. - The mapping in
src/Resources/config/config.yml
contains all the currently possible values of the HTML5autocomplete
field. If the field name equals one of these, it's used. - If the step before isn't met, the algorithm iterates the defined synonyms of the
autocomplete
values. If there's a match, the correspondingautocomplete
value is used. - If none of the steps above is met,
false
is returned.
The comparison only takes into account characters. Special characters and separation characters like -
or _
are ignored. Hence a synonym some-name
equals someName
in
this comparison.