如何在/ admin / sonata / user / user / {id} / edit中覆盖表单的布局

时间:2014-05-06 13:03:55

标签: symfony sonata-admin sonata-user-bundle

我通过创建Application\Sonata\UserBundle\Admin\Model\UserAdmin和扩展管理员扩展了Sonata UserAdmin,然后注释掉了一些我不想显示的字段。

来自config.yml中的sonata_user:

admin:                  # Admin Classes
    user:
        class:          Application\Sonata\UserBundle\Admin\Entity\UserAdmin
        controller:     SonataAdminBundle:CRUD
        translation:    SonataUserBundle

/admin/sonata/user/user/{id}/edit显示的表单模板在哪里以及覆盖它所需的步骤是什么?

2 个答案:

答案 0 :(得分:0)

表单的模板位于vendor / Sonata / ... Resources / views

有两种方法可以覆盖这些模板。最简单的方法是通过在app/Resources/PATH/view.html.twig创建单个模板来覆盖该模板。 PATH =>访问供应商中覆盖的视图的路径,您必须重新创建它。我说view.html.twig,但它可以是另一个名字,只需要是相同的。

与使用UserAdmin实体的方式相同,但是在资源中。

另一种方法是你做了自己的捆绑包,这将是你的一个供应商捆绑的儿子。

要获得更多信息,FOSUserBundle文档非常适合如何覆盖父包中的内容。 检查一下:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_templates.md 还有关于如何覆盖表格和文件的文档。控制器。

祝你好运!

答案 1 :(得分:0)

覆盖UserAdmin类中的getTemplate方法:

public function getTemplate($name)
    {
        switch ($name) {
            case 'edit':
                return 'Application\Sonata:User:edit.html.twig';
                break;
            default:
                return parent::getTemplate($name);
                break;
        }
    }

并创建将覆盖Sonata模板的Application \ Sonata \ Resources \ views \ User \ edit.html.twig:

{# edit.html.twig #}
{% extends 'SonataAdminBundle:CRUD:edit.html.twig' %}

现在您可以根据需要覆盖SonataAdminBundle:CRUD:edit.html.twig的块。