繁体   English   中英

如何在SonataAdminBundle中覆盖每个实体的模板

[英]How to override templates per Entity in SonataAdminBundle

我想基于每个管理员/实体覆盖CRUD列表模板。

假设我有一个名为MyAdminClass的Admin类。 我想通过向app/Resources/SonataAdminBundle/Views/CRUD添加模板来覆盖该类的CRUD列表模板,但不是整个应用程序。 我怎样才能做到这一点?

另外,我如何覆盖一组模板而不是一组?

形成文件

如果您愿意,可以基于每个管理映射指定自定义模板。 在内部,CRUDController从Admin类实例中获取此信息,因此您可以指定要在Admin服务定义中使用的模板:

XML:

 <service id="sonata.admin.post" class="Acme\\DemoBundle\\Admin\\PostAdmin"> <tag name="sonata.admin" manager_type="orm" group="Content" label="Post"/> <argument /> <argument>Acme\\DemoBundle\\Entity\\Post</argument> <argument /> <call method="setTemplate"> <argument>edit</argument> <argument>AcmeDemoBundle:PostAdmin:edit.html.twig</argument> </call> </service> 

YAML:

 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]] 

使用setTemplates的示例:

XML:

<service id="sonata.admin.post" class="Acme\DemoBundle\Admin\PostAdmin">
    <!-- ... -->

    <call method="setTemplates">
        <argument type="collection">
            <argument key="edit">
                AcmeDemoBundle:PostAdmin:edit.html.twig
            </argument>
            <argument key="list">
                AcmeDemoBundle:PostAdmin:list.html.twig
            </argument>
        </argument>
    </call>
</service>

YAML:

services:
    sonata.admin.post:
        # ...

        calls:
            - [setTemplates, [{edit: AcmeDemoBundle:PostAdmin:edit.html.twig, list: AcmeDemoBundle:PostAdmin:list.html.twig }]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM