我们如何覆盖单个Admin类的奏鸣曲包布局 就像我已经创建了3个Admin class userAdmin,productAdmin,ticketAdmin 现在我想覆盖ticketAdmin编辑操作并编辑模板并在那里添加一些额外的代码。
答案 0 :(得分:14)
您可以使用:
控制器:
custom action in SonataAdminBundle
模板:
// in your admin class
public function getTemplate($name)
{
switch ($name) {
case 'edit':
return 'AcmeMyBundle::my-custom-edit.html.twig';
break;
default:
return parent::getTemplate($name);
break;
}
}
答案 1 :(得分:7)
如果您不想创建额外的控制器,可以使用文档中提到的此方法:
Admin's documentation - Reference - Templates (master) - 20.6. Configuring templates
services:
sonata.admin.post:
class: Acme\DemoBundle\Admin\PostAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Post" }
arguments:
- ~
- Acme\DemoBundle\Entity\Post
- ~
calls:
- [ setTemplate, [edit, AcmeDemoBundle:PostAdmin:edit.html.twig]]
将您的模板放在 Resources / views / PostAdmin / edit.html.twig 中。只需从SonataAdmin Bundle复制原始模板并开始覆盖。
博客:Override list view twig template in SonataAdminBundle – webDEVILopers Blog