如何在Symfony2中添加新的表单布局?

时间:2011-11-26 10:44:49

标签: forms symfony craueformflow

在我的Symfony2项目中,我注意到渲染表单只有两个布局选项:

form_table_layout.html.twigform_div_layout.html.twig

这些都位于symfony\src\Symfony\Bridge\Twig\Resources\views\Form,我想在我的app\Resources目录中添加我自己的一个。

我遇到的唯一问题是,当我将新的布局文件(form_list_layout.html.twig)添加到app\Resources\views\Form时,Symfony不会查找它而只是查找默认位置(在Twig目录)。

我已经调整了config.yml来告诉它包含新布局,但也许我做错了什么:

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources: ['form_list_layout.html.twig']
编辑:好的,我现在让Symfony2找到了正确的位置,但它似乎对表单的呈现没有任何影响(我将表格布局文件的内容复制到我的新列表布局中用于测试理论的文件,我的表单仍然使用<div>标记进行渲染。这可能是由我使用的CraueFormFlowBundle引起的,所以我会查看它。

工作config.yml

 twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources:
            - ":Form:form_list_layout.html.twig"

编辑2:看起来与CraueFormFlowBundle无关,我的配置中是否有任何可能导致它忽略全局表单布局的内容?

编辑:实际上,它正在发挥作用。一旦我更改了我的布局文件以包含我的列表元素而不是表格布局内容,它就显得可以。

2 个答案:

答案 0 :(得分:3)

您不必将其放入app子文件夹;你可以把它放在任何你想要的包中。例如,在我的情况下,我已将其放入CommonBundle/Resources/views/Form/fields.html.twig并在config.yml文件中将其激活为

twig:
    form:
        resources: [ 'CommonBundle:Form:fields.html.twig' ]

当然,如果你将它放入app子文件夹,你只需省略包名称部分:

twig:
    form:
        resources: [ ':Form:fields.html.twig' ]

答案 1 :(得分:0)

要正确覆盖表单布局或添加新表单,请将文件放在app/Resources/views/Form目录中,然后将config.yml调整为类似的内容......

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources:
            - ":Form:form_list_layout.html.twig"