如何在 Symfony2 中检查表单构建器中的用户角色?

2024-06-19

好的,我正在尝试检查用户是否具有特定角色,我做到了this https://stackoverflow.com/questions/11998761/how-can-i-access-the-user-role-in-form-builder-class-in-symfony2

但是,当我这样做时:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('nombre',null,array('label' => 'Usuario'))
        ->add('email')
        ->add('password', 'repeated', array(
            'type' => 'password',
            'invalid_message' => 'Los campos deben coincidir',
            'first_name' => 'password',
            'second_name' => 'confirmar password',
            'options' => array('required' => false)
            ))

        ->add('cliente', 'entity', array(
        'class' => 'ClientesBundle:Cliente',
        'empty_value' => 'Company',            
        'required'    => false,
        'empty_data'  => null)
    **)**
      $user = $this->securityContext->getToken()->getUser();
      **if ($user->getRol() == 'ROLE_SUPER_ADMIN'){**
        ->add('rol') 
        **}**
    ;

}

也尝试过这个:

 **if ($this->securityContext->getToken()->getUser()->getRol() === 'ROLE_SUPER_ADMIN'){**
            ->add('rol') 
            **}**

粗体线(带有 ** 的线)有表示错误的小红线,并且表示意外如果... 我该如何解决?


从控制器中,您必须将用户对象传递给表单构建器

$form = $this->createForm(
    new YourType(), 
    $data, 
    array('user' => $this->getUser())
);

然后在表单生成器中您可以从中获取它$options:

public function buildForm(FormBuilder $builder, array $options)
{
    $user = $options['user']
}

别忘了延长setDefaultOptions() with user index:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        ...
        'user' => null
    ));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Symfony2 中检查表单构建器中的用户角色? 的相关文章

随机推荐