1

我发现这个片段确实有用,可以在创建表单时在我的表单中添加默认值

 $builder
 ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => 'Default value'))
 ;

如果我想用 FOSUser 捆绑包中的经过身份验证的人替换“默认值”怎么办?(返回 true 到 is_granted("IS_AUTHENTICATED_REMEMBERED"))

我可以在树枝文件上检索该名称

 {{ app.user.username }} 

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

    $username=$this->container->get('security.context')->getToken()->getUser()->getUsername()   

但我无法让它以我的形式工作!

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

      ->add('myfield', 'text', array(
     'label' => 'Field',
     'data' => FOS\UserBundle\Model::$this->getUsername()))
4

2 回答 2

5

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

在您的控制器中:

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

以您的形式:

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))
}
于 2012-11-21T13:23:31.747 回答
2

将默认值设置到表单中的另一种方法是在表单的底层数据对象上设置它们,如 Symfony 构建表单的文档中的这个示例:

public function newAction()
{
    // create a task and give it some dummy data for this example
    $task = new Task();
    $task->setTask('Write a blog post');
    $task->setDueDate(new \DateTime('tomorrow'));

    $form = $this->createFormBuilder($task)
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->getForm();

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
    ));
}

在此示例中,表单的基础数据对象是一个任务,并且在任务上设置的值是要在表单中显示的默认值。任务对象不是持久的。这种方法同样适用于表单类,并假设您的表单的底层对象是 User 看起来像这样:

$username = $this->container->get('security.context')->getToken()->getUser()->getUsername();

$user = new User();
$user->setUsername($username);
// could set any other default values on user here

$form = $this->createForm(new MyFormClass(), $user);

这种方法的缺点是,如果在许多需要相同默认值的地方使用表单,则代码将被重复。到目前为止,这不是我遇到的情况 - 我的用户表单被重新用于创建/编辑,但编辑不需要默认值。

于 2012-11-21T21:46:01.840 回答