如何将自定义参数/属性从树枝模板传递到自定义表单字段?
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 没有问题?
我正在使用 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 没有问题?