我不知道如何使用bootstrap_3_horizontal_layout.html.twig中定义的块来保存我的表单。
到目前为止,我做到了这一点并且工作正常。
{% form_theme form 'bootstrap_3_horizontal_layout.html.twig' %}
<div class="well">
{{ form_start(form) }}
{{ form_errors(form) }}
{{ form_row(form.title, {'label': 'Titre'}) }}
{{ form_row(form.content, {'label': "Content"}) }}
...
{{ form_rest(form) }}
{{ form_end(form) }}
</div>
但如果我尝试使用。或bootstrap_3_horizontal_layout中定义的任何其他块,如
{{ textarea_widget(form.content, {'label': "Content"}) }}
它不能正常工作。
答案 0 :(得分:2)
您在第一个示例(form_start
,form_errors
等)中调用的函数是在使用>中的Twig扩展名(documentation)中定义的函数em>定义的主题以生成输出。因此bootstrap_3_horizontal_layout.html.twig
中定义的块由这些函数调用(它们是Symfony表单视图组件的扩展),您不能自己直接“调用”这些块。
如果您尝试自定义表单的输出,最简单的方法是创建自己的表单主题,该主题从基本主题扩展:
{% extends 'bootstrap_3_horizontal_layout.html.twig' %}
{% block textarea_widget %}
{# your code #}
{% endblock %}
Symfony cookbook entry中描述了这一点。
如果您尝试直接调用窗口小部件,则最好更改传递给渲染器的窗体域的类型。可用的不同类型位于form documentation。您选择的类型定义了从主题中呈现的块 - 因此,如果您将字段类型更改为textarea
,则会textarea_widget
(好,textarea_row
优先) 。如果您需要对此进行概述,form fragment naming文档可以为您提供帮助。
答案 1 :(得分:2)
感谢John Noel,我找到了答案。 总结一下是否有人想要做同样的事情。
在Symfony2表单中使用bootstrap3预定义布局
1 - 声明要使用的表单主题。
你的树枝模板中的
{% form_theme form 'bootstrap_3_horizontal_layout.html.twig' %}
或者/app/config/config.yml
中所有表单的全局# Twig Configuration
twig:
form:
#resources: ['bootstrap_3_layout.html.twig']
resources: ['bootstrap_3_horizontal_layout.html.twig']
2 - 使用Symfony Twig Extensions显示表单
3 - 您必须在formbuilder中使用正确的Form Type(这是我缺少的部分)。
例如:使用Bootstrap 3小部件资金。
在您的form.html.twig
中{% form_theme form 'bootstrap_3_horizontal_layout.html.twig' %}
{{ form_start(form) }}
...
{{ form_row(form.price, {'label': "Price"}) }}
...
{{ form_end(form) }}
在您的FormType
中$builder->add('price', 'money');
我希望这可以帮助别人,因为这是我希望我找到的! 再次感谢John Noel