2012-07-09 76 views
3

我使用的是SonataUser的FOSUser & SonataAdmin。 另外我使用SonataEasyExtends创建应用程序/应用程序/奏鸣曲/用户捆绑,在几个教程中告诉您在Sonata中使用FOS。SonataUser - 从管理员表格中删除字段

我只是想从用户实体的管理员窗体中删除几个默认字段,比如社交用户实例(Facebook,Twitter,...)。

我试图把

#app/Application/Sonata/UserBundle/Admin/Model/UserAdmin.php 

namespace Application\Sonata\UserBundle\Admin\Model; 

use Sonata\UserBundle\Admin\Model\UserAdmin as UserAdmin; 

class MyUserAdmin extends UserAdmin 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
      ->with('General') 
       ->add('username') 
       ->add('email') 
       ->add('plainPassword', 'text', array('required' => false)) 
      ->end() 
      ->with('Groups') 
       ->add('groups', 'sonata_type_model', array('required' => false)) 
      ->end() 
     ; 

     if (!$this->getSubject()->hasRole('ROLE_SUPER_ADMIN')) { 
      $formMapper->with('Management') 
       ->add('roles', 'sonata_security_roles', array(
        'expanded' => true, 
        'multiple' => true, 
        'required' => false 
       )) 
       ->add('locked', null, array('required' => false)) 
       ->add('expired', null, array('required' => false)) 
       ->add('enabled', null, array('required' => false)) 
       ->add('credentialsExpired', null, array('required' => false)) 
      ->end(); 
     } 

     $formMapper 
      ->with('Security') 
       ->add('token', null, array('required' => false)) 
       ->add('twoStepVerificationCode', null, array('required' => false)) 
      ->end(); 
    } 
} 

我想我已经把它注册为服务,并告诉索纳塔在默认情况下用它来替代形式。

但我不知道该怎么做。

我至少在正确的轨道上?

回答

1

Sonata User Admin的表单不会被自动覆盖。

根据Thomas Rabaix我们要告诉奏鸣曲使用我们新的管理实体

#app/config/config.yml 
services: 
    vendor.admin.extens: 
     class: Application\Sonata\ProductBundle\Admin\ProductAdmin 
     tags: 
      - { name: sonata.admin.extens, target: sonata.product.admin.product } 
3

这是正确的,只是指向新的UserAdmin类:

#app/config/config.yml 
sonata_user: 
admin: 
    user: 
     class:  Application\Sonata\UserBundle\Admin\UserAdmin  

之后,你覆盖完整configureFormFields()方法并省略字段。

但也有删除()方法

class UserAdmin extends SonataUserAdmin 
{ 
    // Fields to be shown on create/edit forms 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     parent::configureFormFields($formMapper); 
     $formMapper 
      ->remove('facebookUid'); 
    } 
} 

你可以用任何领域做到这一点。不幸的是,并不容易removeGroup('Social')方法 - 这可能是一种改进。

+0

我提出了这种改进:https://github.com/sonata-project/SonataAdminBundle/issues/2294 – webDEVILopers 2014-08-13 09:20:37

+0

只需在代码的第一部分编辑缩进,以防某人想要复制/粘贴代码:sonata_user和管理员不在相同的缩进级别 – 2015-12-01 14:45:55

相关问题