TYPO3开发:如何为表单select的additionalAttributes添加多属性?
解决TYPO3 Fluid表单Select控件additionalAttributes类型错误问题
错误根源:直接将自定义属性数组与formvh:translateElementProperty返回的属性字符串拼接,导致additionalAttributes被解析为字符串类型,而f:form.select视图助手要求该参数必须是数组。
正确解决步骤:
- 用
formvh:parseAdditionalAttributes把fluidAdditionalAttributes对应的字符串属性解析为数组 - 用
f:array.merge把自定义的aria-describedby数组和解析后的数组合并
修改后的完整代码:
<f:render partial="Field/Field" arguments="{element: element, doNotShowLabel: 1}" contentAs="elementContent"> <f:render partial="Field/Field" section="label" arguments="{_all}"/> <f:form.select property="{element.identifier}" id="{element.uniqueIdentifier}" options="{formvh:translateElementProperty(element: element, property: 'options')}" class="{element.properties.elementClassAttribute} form-control" errorClass="{element.properties.elementErrorClassAttribute}" additionalAttributes="{ f:array.merge( array1: {aria-describedby: 'help-block'}, array2: formvh:parseAdditionalAttributes(additionalAttributes: formvh:translateElementProperty(element: element, property: 'fluidAdditionalAttributes')) ) }" prependOptionLabel="{f:render(partial: 'Field/Field', section: 'label', arguments: '{_all}') -> f:spaceless() -> f:format.stripTags()}" prependOptionValue="" /> </f:render>
关键说明:
formvh:parseAdditionalAttributes:TYPO3 Form扩展内置视图助手,专门将字符串格式的HTML属性(例如data-test="123" disabled)转换为键值对数组,完美匹配additionalAttributes的参数类型要求。f:array.merge:Fluid核心视图助手,负责将自定义属性数组和解析后的原有属性数组合并,保证所有属性都能正确传递到表单控件上。
内容的提问来源于stack exchange,提问作者moho123
相关产品推荐
相关产品推荐

