heimrichhannot / contao-form-autocomplete-bundle
此插件为Contao CMS中的表单字段添加HTML5属性“autocomplete”的功能。
1.3.1
2024-05-21 12:35 UTC
Requires
- php: ^7.2 || ^8.0
- contao/core-bundle: ^4.9
- heimrichhannot/contao-utils-bundle: ^2.236 || ^3.0
- symfony/config: ^4.4 || ^5.4
- symfony/dependency-injection: ^4.4 || ^5.4
- symfony/http-kernel: ^4.4 || ^5.4
README
此插件为Contao CMS中的表单字段添加HTML5属性autocomplete
的功能。
autocomplete
属性在以下情况下使用
- 浏览器使用它为设置了不同
autocomplete
值的字段提供不同的自动完成选项。 - 屏幕阅读器会口头表达它,因此设置它们是一种好的做法。
功能
- 将HTML5
autocomplete
属性添加到表单字段 - 支持
- Contao表单生成器
- 使用Widget::parse()生成的所有表单字段(使用getAttributesFromDca钩子)
安装
- 通过composer安装:
composer require heimrichhannot/contao-form-autocomplete-bundle
。
它是如何工作的?
表单生成器
默认支持表单生成器。根据字段名称猜测autocomplete
值。该值基于插件配置中定义的映射进行猜测。您可以在项目中扩展此映射(见以下章节)。
Dca字段
以下是可以将autocomplete
值添加到字段的以下支持方法(优先级按降序排列)
- DCA定义在其
eval
部分设置// tl_my_table.php 'myFirstnameField' => [ 'label' => &$GLOBALS['TL_LANG']['tl_my_table']['myFirstnameField'], // ... 'eval' => [ 'autocomplete' => 'given-name' ] ]
- 如果没有找到DCA定义或相关上下文(例如,在表单生成器中没有DCA上下文),插件尝试根据在此插件中定义的字段名到
autocomplete
值的映射进行猜测。您可以在项目中扩展此映射(见以下章节)。
技术细节
扩展给定的映射
只需根据您的需求将以下代码添加到您的app/config/config.yml
(Contao 4.4)或config/config.yml
huh_form_autocomplete: mapping: given-name: synonyms: - my-new-value new-autocomplete-name: synonyms: - brand-new-autocomplete-name
字段名和自动完成值是如何匹配的?
该算法目前非常简单。基本工作方式如下
- 如果字段在DCA中设置了
autocomplete
值,则使用该值。 src/Resources/config/config.yml
中的映射包含HTML5autocomplete
字段当前所有可能的值。如果字段名等于这些值之一,则使用该值。- 如果前面的步骤不满足,则算法迭代
autocomplete
值的定义同义词。如果找到匹配项,则使用相应的autocomplete
值。 - 如果上述步骤中没有满足条件,则返回
false
。
比较仅考虑字符。忽略特殊字符和分隔符,如-
或_
。因此,同义词some-name
在此比较中等于someName
。