从表单生成器symfony 2.8获取用户

时间:2017-04-24 11:58:42

标签: symfony

我想以选择的形式检索当前公司的框架列表,了解当前用户是公司。

但我有以下错误:

Attempted to call an undefined method named "get" of class "Gestion\StageBundle\Form\StageType".
 Did you mean to call e.g. "getBlockPrefix", "getName" or "getParent"?

my classType

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $ent_id= $this->get('security.context')->getToken()->getUser();
    $builder->add('sujet')->add('dateDebut')->add('dateFin')
    ->add('encadreur', EntityType::class, array(

'class' => 'UserBundle:Encadreur',
'query_builder' => function (EntityRepository $er) {
    return $er->createQueryBuilder('u')
        ->where('u.entreprise=$ent_id')
        ->orderBy('u.username', 'ASC');
},


'choice_label' => 'username',


));
  }

1 个答案:

答案 0 :(得分:0)

您可以将TokenStorage添加到表单类型构造函数

private $tokenStorage;

public function __construct(TokenStorageInterface $tokenStorage)
{
    $this->tokenStorage = $tokenStorage;
}

并使您的表单输入服务,例如

app.form.something:
        class: Gestion\StageBundle\Form\StageType
        arguments: ['@security.token_storage']
        tags:
            - { name: form.type }

然后您可以使用表单类型

获取用户
$user = $this->tokenStorage->getToken()->getUser();