在Symfony 2中,我正在尝试创建一个Twig表单模板来显示类似Bootstrap的表单小部件。多亏了article,我才有了先机。像下面这样的简单小部件可以工作。
…
{% block form_widget_simple %}
{% spaceless %}
{% set type = type|default('text') %}
<input class="form-control" type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{% endspaceless %}
{% endblock form_widget_simple %}
…
使用下面的代码调用此块。
{{ form_row(aanmeld_form.username, {'attr': {'placeholder': 'Gebruikersnaam'}, 'label': 'Gebruikersnaam', 'label_attr': {'class': 'sr-only'}}) }}
现在我想建立这些简单的小部件来满足Bootstrap 3's input groups。
我知道有很多软件包可以将Bootstrap 3集成到Symfony 2中,比如MopaBootstrapBundle和BraincraftedBoostrapBundle。我希望尽可能保持我的代码尽可能小,我希望能够得到相同的结果,只修改Twig表单小部件。
这个想法是在调用窗口小部件时加入一个额外的变量,就像这样。
{{ form_row(aanmeld_form.username, {'input_group': { 'prepend': '@' }, 'attr': {'placeholder': 'Gebruikersnaam'}, 'label': 'Gebruikersnaam', 'label_attr': {'class': 'sr-only'}}) }}
但是,当我尝试使用此'input_group'
变量时,Symfony不知道此变量。
{% block form_widget_simple %}
{{ input_group }}
{% spaceless %}
{% set type = type|default('text') %}
<input class="form-control" type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{% endspaceless %}
{% endblock form_widget_simple %}
此代码导致此错误。 Variable "input_group" does not exist.
甚至可以在Twig表单小部件的调用中存储额外的变量吗?我忘记了什么吗?
答案 0 :(得分:1)
您不能只为未为该元素定义的元素添加选项。您可以考虑创建自己的自定义表单字段。 This示例显示如何创建包含子表单字段的下拉列表。您需要类似的东西,但要更改它,以便子元素包含在输入组div中。有关其他信息,您可以查看existing form types并从那里提取所需的代码。