我正在努力使用symfony / sonata的模板引擎...通常我熟悉继承和面向对象的设计,但我不明白这一点。
我的目标是覆盖DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig,因为我相信,我的管理类中的show函数列表会在那里呈现。我需要它,因为我想要显示我的数据不仅仅是像奏鸣曲现在这样做的简单列表。我只想覆盖我的捆绑包中的一个显式管理员的show功能和一般!
根据奏鸣曲文档,我只能通过将一个自己继承的版本注入我的服务来覆盖通用模板“SonataAdminBundle:CRUD:base_show.html.twig”
- [ setTemplate, [show, AcmeBundle:TestAdmin:show.html.twig]]
问题是,基本模板包含/涉及许多其他模板,有时通过php在模板中注入的对象函数访问。
如何访问/覆盖
DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig
以便使用我的版本代替供应商吗?我是否要覆盖所有链接模板?
DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig扩展SonataAdminBundle:CRUD:base_show_field.html.twig
但我不知道,SonataAdminBundle如何:CRUD:base_show_field.html.twig来到SonataAdminBundle:CRUD:base_show.html.twig。我找不到合适的代码。
由于
答案 0 :(得分:0)
您可以逐个字段覆盖模板,而不是覆盖整个节目模板。
$showMapper->add(
'my_field',
null, // let the type guesser do its thing
['template' => 'whatever_you_need.html.twig']
);
这是有效的,你无法在文档中找到它,请考虑提供一个关于它的段落。