覆盖用户管理表单

Pie*_*NAY 5 symfony-forms symfony symfony-sonata sonata-admin

我试图覆盖SonataUser/Admin/Model/UserAdmin's,configureFormFields()因为我需要从管理表单中删除一些默认字段.所以我vendor/bundles/Sonata/UserBundle/Admin/Model/UserAdmin.php在我的包中复制了文件app/Application/Sonata/UserBundle/Admin/Model/UserAdmin.php并对其进行了修改.然后将其声明为服务:

# app/application/Sonata/UserBundle/Resources/config/services.yml
services:
    application_user.registration.form.type:
        class: Application\Sonata\UserBundle\Admin\Model\UserAdmin
        arguments: [%sonata_user.model.user.class%]
        tags:
            - { name: form.type, alias: application_user_admin }
Run Code Online (Sandbox Code Playgroud)

现在问题:我做对了吗?我如何告诉sonata管理员使用它?

Aur*_*nas 16

覆盖类应该在config.yml中设置:

# app/config/config.yml
sonata_user:
  admin:
    user:
      class:      MyCompany\UserBundle\Admin\Model\UserAdmin
Run Code Online (Sandbox Code Playgroud)

扩展原始UserAdmin:

namespace MyCompany\UserBundle\Admin\Model;

use Sonata\AdminBundle\Form\FormMapper;

class UserAdmin extends \Sonata\UserBundle\Admin\Model\UserAdmin
{

    protected function configureFormFields(FormMapper $formMapper)
    {
        // new logic
    }

}
Run Code Online (Sandbox Code Playgroud)

当然更改类名称MyCompany\UserBundle\Admin\Model\UserAdmin以反映您的包结构.