在我的Symfony2项目中,我注意到只有两个布局选项用于呈现表单:
form_table_layout.html.twig
和form_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"