如何从 Sonata User Bundle 的管理员用户创建页面中删除字段?

How to remove fields from the admin user create page of Sonata User Bundle?

我已经在我的 Symfony 2.6 应用程序中安装了 Sonata Admin Bundle and User Bundle。我发现用户包在 src/Application/Sonata/UserBundle 处创建了一个包。当我转到管理用户创建页面(admin/sonata/user/user/create)时,我发现那里有很多字段:

我只需要用户名、电子邮件、密码、组、名字和姓氏来创建我的管理员用户。如何从该页面中删除其他不需要的字段?

config.yml 中的 sonata 用户包配置下,即 sonata_user 您可以覆盖 sonata 用户管理员 class 并定义您自己的管理员 class

sonata_user
    admin:                  # Admin Classes
        user:
            class:          Application\Sonata\UserBundle\Admin\UserAdmin
            #Sonata\UserBundle\Admin\Entity\UserAdmin
            controller:     ApplicationSonataUserBundle:UserCURD /** you can also override CURD controller for your admin class*/
            translation:    SonataUserBundle

现在在您的扩展包中创建您的用户管理员 class 即 ApplicationSonataUserBundle 并使用奏鸣曲的 Sonata\UserBundle\Admin\Model\UserAdmin 扩展您的 class,现在在 configureFormFields() 中定义您的您要添加的所需字段

use Sonata\UserBundle\Admin\Model\UserAdmin as BaseUserAdmin;
class UserAdmin extends BaseUserAdmin {
    protected function configureFormFields( FormMapper $formMapper ) {
     $formMapper->add('some field'); ...
     /** Do your stuff here */
    }
}

或删除一些字段:

use Sonata\UserBundle\Admin\Model\UserAdmin as BaseUserAdmin;
class UserAdmin extends BaseUserAdmin {
    protected function configureFormFields( FormMapper $formMapper ) {
        parent::configureFormFields($formMapper);
        $formMapper->remove('some field');
    }
}

请参阅 ADVANCED CONFIGURATION 索纳塔用户包