根据管理员的角色更改字段的选项(Sonata管理员)

时间:2017-07-17 13:10:25

标签: fosuserbundle sonata-admin symfony-3.3

我的仪表板管理员有两个不同的角色:ROLE_SONATA_ADMIN和ROLE_SONATA_SUPER_ADMIN。

这两个角色具有几乎相同的功能,但添加新用户时有所不同:如果管理员具有角色' ROLE_SONATA_SUPER_ADMIN'它可以添加其他管理员,如果没有它只能添加简单的用户。

目前我显示了字段'键入'要选择要添加的用户类型:

            ->add('type',ChoiceType::class,array('label' => 'Type' ,
            'choices' => array('ADMIN' => 'admin',
                'CLIENT' => 'client',

            )))

如何根据admin角色更改字段类型选项。?

感谢

1 个答案:

答案 0 :(得分:1)

   protected function configureFormFields(FormMapper $formMapper)
{
    $user=$this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();


    if($user->hasRole("ROLE_SONATA_SUPER_ADMIN ")){


        $cases = ['ADMIN' => 'admin', 'CANDIDAT' => 'candidat',

        ];

    }else{

        $cases = [ 'CANDIDAT' => 'candidat',
            'CLIENT' => 'client',
        ];
    }

And :

        $formMapper->add('type',ChoiceType::class,array('label' => 'Type' ,
            'choices' => $cases))