理解sonata/twig的模板机制
Understanding the template mechanism of sonata / twig
我正在为symfony/sonata的模板引擎而苦恼...通常我熟悉继承和面向对象设计,但我不明白这些。
我的目标是覆盖 DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig,因为我相信,我的管理员 class 中的显示功能列表已呈现在那里。我需要它,因为我不仅想在普通列表中显示我的数据,就像奏鸣曲现在正在做的那样。我只想为我的捆绑包中一个显式管理员的显示功能覆盖它,一般情况下!
根据奏鸣曲文档,我只能通过将自己的继承版本注入我的服务来覆盖通用模板"SonataAdminBundle:CRUD:base_show.html.twig"
- [ setTemplate, [show, AcmeBundle:TestAdmin:show.html.twig]]
问题是,基本模板包括/涉及许多其他模板,有时由 php 注入模板的对象函数访问。
我怎样才能 access/override
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 的。我找不到合适的代码。
谢谢
您可以逐场覆盖模板,而不是覆盖整个节目模板。
$showMapper->add(
'my_field',
null, // let the type guesser do its thing
['template' => 'whatever_you_need.html.twig']
);
它有效,但您在文档中找不到它,请考虑贡献一段关于它的内容。
我正在为symfony/sonata的模板引擎而苦恼...通常我熟悉继承和面向对象设计,但我不明白这些。
我的目标是覆盖 DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig,因为我相信,我的管理员 class 中的显示功能列表已呈现在那里。我需要它,因为我不仅想在普通列表中显示我的数据,就像奏鸣曲现在正在做的那样。我只想为我的捆绑包中一个显式管理员的显示功能覆盖它,一般情况下!
根据奏鸣曲文档,我只能通过将自己的继承版本注入我的服务来覆盖通用模板"SonataAdminBundle:CRUD:base_show.html.twig"
- [ setTemplate, [show, AcmeBundle:TestAdmin:show.html.twig]]
问题是,基本模板包括/涉及许多其他模板,有时由 php 注入模板的对象函数访问。
我怎样才能 access/override
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 的。我找不到合适的代码。
谢谢
您可以逐场覆盖模板,而不是覆盖整个节目模板。
$showMapper->add(
'my_field',
null, // let the type guesser do its thing
['template' => 'whatever_you_need.html.twig']
);
它有效,但您在文档中找不到它,请考虑贡献一段关于它的内容。