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



在我的Symfony2项目中,我注意到只有两个布局选项用于呈现表单:

form_table_layout.html.twigform_div_layout.html.twig

它们都位于symfonysrcSymfonyBridgeTwigResourcesviewsForm中,我想在我的appResources目录中添加一个我自己的目录。

我唯一的问题,是当我添加我的新布局文件(form_list_layout.html.twig)到appResourcesviewsForm, 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,有什么在我的配置,可能导致它忽略全局表单布局?

编辑:实际上,它正在工作。当我修改布局文件以包含列表元素而不是表格布局内容时,它就出现了。

您不必将其放入app子文件夹;你可以把它放在任何你想要的bundle中。例如,在我的例子中,我将它放在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' ]

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

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

相关内容

  • 没有找到相关文章

最新更新