理解奏鸣曲/树枝的模板机制

时间:2017-02-11 11:00:01

标签: templates doctrine twig sonata

我正在努力使用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。我找不到合适的代码。

由于

1 个答案:

答案 0 :(得分:0)

您可以逐个字段覆盖模板,而不是覆盖整个节目模板。

$showMapper->add(
    'my_field',
    null, // let the type guesser do its thing
    ['template' => 'whatever_you_need.html.twig']
);

这是有效的,你无法在文档中找到它,请考虑提供一个关于它的段落。