Php SonataUser-从管理表单中删除字段
我正在将FOSUser与SonataUser和SonataAdmin一起使用。 此外,我还使用SonateAsysExtends来创建app/Application/Sonata/UserBundle,正如在几个教程中介绍的那样,在Sonata中使用FOS 我只是想从用户实体的管理表单中删除几个默认字段,例如社交字段(facebook、twitter等等) 我试着通过放置Php SonataUser-从管理表单中删除字段,php,symfony,fosuserbundle,symfony-sonata,sonata-admin,Php,Symfony,Fosuserbundle,Symfony Sonata,Sonata Admin,我正在将FOSUser与SonataUser和SonataAdmin一起使用。 此外,我还使用SonateAsysExtends来创建app/Application/Sonata/UserBundle,正如在几个教程中介绍的那样,在Sonata中使用FOS 我只是想从用户实体的管理表单中删除几个默认字段,例如社交字段(facebook、twitter等等) 我试着通过放置 #app/Application/Sonata/UserBundle/Admin/Model/UserAdmin.php
#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();
}
}
我想我必须将它注册为一个服务,并告诉Sonata默认使用它
但我不知道怎么做
我至少在正确的轨道上吗?Sonata用户管理员的表单不会被自动覆盖 根据我们的要求,我们必须告诉sonata使用我们的新管理实例
#app/config/config.yml
services:
vendor.admin.extens:
class: Application\Sonata\ProductBundle\Admin\ProductAdmin
tags:
- { name: sonata.admin.extens, target: sonata.product.admin.product }
没错,只需指向您的新UserAdmin类:
#app/config/config.yml
sonata_user:
admin:
user:
class: Application\Sonata\UserBundle\Admin\UserAdmin
然后重写完整的configureFormFields()方法并省略字段
但是还有一个remove()方法:
您可以对任何字段执行此操作。不幸的是,没有简单的removeGroup(“Social”)方法——这可能是一个改进。我提出了这个改进:只需在代码的第一部分编辑缩进,以防有人只是想复制/粘贴代码:sonata_用户和管理员不在同一缩进级别
class UserAdmin extends SonataUserAdmin
{
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
parent::configureFormFields($formMapper);
$formMapper
->remove('facebookUid');
}
}