我想为我的内联集合创建一个自定义模板,因为内联不合适。我正在努力弄清楚如何获得一个自定义模板来渲染。
我尝试添加一个模板,然后在字段上使用template
作为属性,但没有成功。
->add('pictures', CollectionType::class, [
'by_reference' => false,
'label' => false,
], [
'edit' => 'inline',
'inline' => 'table',
'template' => 'admin/picture/test.html.twig'
])
我的自定义管理编辑模板etc网站在templates/admin/
我还向集合使用的管理员添加了方法getFormTheme()
,并添加了一个dump-and-die,以查看它是否被调用,并且它没有dump-and-die。
// PicutreAdmin.php
public function getFormTheme()
{
return array_merge(parent::getFormTheme(), [
'admin/picture/test.html.twig'
]);
}
注意,我希望这个模板只应用于这个特定的集合,而不应用于我正在使用的其他集合。
您可以覆盖如下所示的管理模板https://sonata-project.org/bundles/admin/master/doc/reference/templates.html扩展它并使用此处描述的策略https://symfony.com/doc/4.0/form/form_customization.html关于如何自定义单个字段
但请注意,Sonata为所有表单元素名称添加了自定义前缀,因此您必须弄清楚该集合的命名方式,您可以通过调试表单块来做到这一点,本文可能会对您有所帮助https://blog.bouzekri.net/2015-02-06-symfony-tips-find-form-theme-override-block-name.html