Symfony 3+:自定义表单元素模板
Symfony 3+: Custom form element template
我们终于升级到 Symfony 3,但这会导致一些问题。
我正在尝试解决的当前问题是 https://api.symfony.com/2.8/Symfony/Component/Form/FormTypeInterface.html#method_getName 已被弃用。
FormTypeInterface#getName()
用于创建昵称 用于 twig 表单模板。
示例自定义表单类型:
class MyCustomType extends AbstractType {
// ...
public function getName() {
return 'my_custom';
}
}
Twig 中的示例模板行:
{% block my_custom_row %}
{# ... #}
{% endblock %}
问题:
Symfony 3+ 中自定义表单类型的命名约定是什么? IE。我应该如何命名树枝块以自定义表单 row/widget/error 渲染?
Twig 方块默认命名为 FormType
class 没有 Type
后缀。 IE。 my_custom_row
用于 *_row
块。
其他更自定义的方法是添加函数getBlockPrefix()
(https://api.symfony.com/3.1/Symfony/Component/Form/FormTypeInterface.html#method_getBlockPrefix)。该函数应该 return 与之前的 getName()
完全相同的块名称前缀,但这是可选的,仅当块前缀不同于 class 名称时才需要。
在 Symfony4 中也可以使用表单选项 block_name
来覆盖默认值。
我们终于升级到 Symfony 3,但这会导致一些问题。
我正在尝试解决的当前问题是 https://api.symfony.com/2.8/Symfony/Component/Form/FormTypeInterface.html#method_getName 已被弃用。
FormTypeInterface#getName()
用于创建昵称 用于 twig 表单模板。
示例自定义表单类型:
class MyCustomType extends AbstractType {
// ...
public function getName() {
return 'my_custom';
}
}
Twig 中的示例模板行:
{% block my_custom_row %}
{# ... #}
{% endblock %}
问题:
Symfony 3+ 中自定义表单类型的命名约定是什么? IE。我应该如何命名树枝块以自定义表单 row/widget/error 渲染?
Twig 方块默认命名为 FormType
class 没有 Type
后缀。 IE。 my_custom_row
用于 *_row
块。
其他更自定义的方法是添加函数getBlockPrefix()
(https://api.symfony.com/3.1/Symfony/Component/Form/FormTypeInterface.html#method_getBlockPrefix)。该函数应该 return 与之前的 getName()
完全相同的块名称前缀,但这是可选的,仅当块前缀不同于 class 名称时才需要。
在 Symfony4 中也可以使用表单选项 block_name
来覆盖默认值。