如何将自定义参数/属性从树枝模板传递到自定义表单字段?

How to pass custom parameters / attributes from twig template to custom form field?

我正在使用 Symfony 3.4 并创建了自定义 FormType。我想将一些参数从树枝模板传递到这种类型的表单字段。

根据 Symfony Docs 这应该是可能的:

{# render a widget, but add a "foo" class to it #}
{{ form_widget(form.name, { 'attr': {'class': 'foo'} }) }} 

虽然这在使用 TextType 等内置表单类型时确实有效,但我无法找到如何为我的自定义类型实现相同的目的:

// Form Type class
class MyCustomType extends AbstractType {

    public function getBlockPrefix() {
        return 'my_custom_type';
    }

    public function getParent() {
        return ChoiceType::class;
    }

    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults(array(
            'translation_domain' => 'app',
        ));
    }
}


// Widget Template
{% block my_custom_type_widget %}
    {{ dump(form) }}
    {% if form.vars.attr.class is defined %} 
        {{ form.vars.attr.class }}
    {% endif %}
    ...
{% endblock %}


// Form template
...
{{ form_start(form) }}
    {{ form_widget(form.myCustom, {'attr': {'class': 'customClass'}}) }}
    ...
{{ form_end(form) }}

在表单模板中添加的 customClass 未传递到小部件模板。 {% if form.vars.attr.class is defined %} 测试有效,但只有默认的 class formName-myCustom 可用。

那么,如何将自定义属性从 twig 传递到我的自定义表单类型?我必须对我的自定义类型进行哪些更改才能让它像 TextType 一样工作,在 Twig 中传递 class 没有问题?

尝试将默认值 class 与 https://github.com/symfony/symfony/blob/5.x/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig#L29

中的新值合并