如何在Symfony 2表单字段中将默认值设置为FOSUserBundle中的身份验证用户名

Mat*_*eil 1 forms symfony fosuserbundle

我发现这个片段确实在创建时在我的表单中放置了一个默认值

 $builder
 ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => 'Default value'))
 ;
Run Code Online (Sandbox Code Playgroud)

如果我想用FOSUser捆绑中的身份验证人员替换"默认值"该怎么办?(返回true为is_granted("IS_AUTHENTICATED_REMEMBERED"))

我可以用twig文件检索该名称

 {{ app.user.username }} 
Run Code Online (Sandbox Code Playgroud)

我也用控制器方法完成了它

    $username=$this->container->get('security.context')->getToken()->getUser()->getUsername()   
Run Code Online (Sandbox Code Playgroud)

但我无法设法使我的形式工作!

我不确定我是否理解那个容器的东西......既不是如何在类和控制器之间传递变量......这可能是什么?

      ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => FOS\UserBundle\Model::$this->getUsername()))
Run Code Online (Sandbox Code Playgroud)

Cho*_*hop 5

您可以将控制器中的变量传递到表单:

在你的控制器中:

$username=$this->container->get('security.context')->getToken()->getUser()->getUsername()
$form = $this->createForm(new MyFormType($username), $entity);
Run Code Online (Sandbox Code Playgroud)

在你的形式:

protected $username;

public function __construct (array $username = null)
{
        $this->username = $username ;
}

public function buildForm(FormBuilder $builder, array $options)
{
   $builder  
     ->add('myfield', 'text', array(
      'label' => 'Field',
      'data' => $this->username))
}
Run Code Online (Sandbox Code Playgroud)