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

2.4k views Asked by At

I have installed Sonata Admin Bundle and User Bundle in my Symfony 2.6 application. I found that the User bundle creates a bundle at src/Application/Sonata/UserBundle. When I go to the admin user creation page (admin/sonata/user/user/create), I found a lot of fields there:

  • General
    • Username
    • E-Mail-Address
    • Plain password
  • Groups
  • Profile
    • Date of birth
    • Firstname
    • Lastname
    • Website
    • Biography
    • Gender
    • Locale
    • Timezone
    • Phone
  • Social
    • Facebook Uid
    • Facebook Name
    • Twitter Uid
    • Twitter Name
    • Google+ Uid
    • Google+ Name
  • Management

    • Roles
    • Locked
    • Expired
    • Enabled
    • Credentails expired
  • Security

    • Token
    • Two Step Verification Code

I only need Username, E-Mail, Password, Groups, Firstname and Lastname for my admin user creation. How can I remove the other unnecessary fields from that page?

1

There are 1 answers

0
M Khalid Junaid On BEST ANSWER

Under configuration for sonata user bundle in config.yml i.e sonata_user you can override sonata user admin class and define your own admin 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

Now create your user admin class in your extended bundle i.e ApplicationSonataUserBundle and extend your class with sonata's Sonata\UserBundle\Admin\Model\UserAdmin, now in configureFormFields() define your desired fields you want to add

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 */
    }
}

Or remove some of the fields :

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

See ADVANCED CONFIGURATION for sonata user bundle