2012-04-10 39 views
2

我使用Symfony 2和FOSUserBundle创建了一个应用程序。我有我自己的UserBundle配置正确。我的用户实体具有很多不同类别的属性(例如位置设置,个人设置...),所以我想为每个类别制作不同的表单,以便我可以在不同的页面上显示每个设置类别。使用FOSUserBundle创建多个配置文件表单

我知道如何制作一个自定义配置文件表单(它在FOSUserBundle文档中),我已经制作了多个FormTypes和一个额外的控制器,但我无法用当前用户数据填充它。我尝试以下

$user = $this->container->get('security.context')->getToken()->getUser(); 
// Try 1 
$form = $this->createForm(new InnerCharacteristicsType()); 
// Try 2 
$form = $this->createForm(new InnerCharacteristicsType($user)); 
// Try 3 
$form = $this->createForm(new InnerCharacteristicsType(), $user); 
// Try 4 
$form = $this->createForm(new InnerCharacteristicsType(), array('user' => $user); 

return $this->render('AcmeUserBundle:EditProfile:inner.html.twig', array('form' => $form->createView())); 

(当然,我没有尝试他们在同一时间)

我也试图使新形式的服务加入我的InnerCharacteristics形式向services.yml但我找不到任何文件。 FOSUserBundle中的profile.xml本身也不是很有用,因为我找不到参数指向的地方。此外,XML到YAML的转换并不是很容易,因为关于此的文档并不是非常有用(因为FOSUserBundle配置在XML中,我的UserBundle配置在YAML中,因此这是必需的)。

这就是我在我的services.yml现在:

acme_user.inner_characteristics_profile.form: 
    class: Symfony\Component\Form\Form 
    factory_service: form.factory 
    factory_method: createNamed 

我希望有人可以给我一些指点下一步去哪里。

回答

0

这是创建表单的正确方法:

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

内,您的表格,你应该做这样的事情:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    // Add fields 
    $builder->add('name', 'text', array('label' => 'Name:')); 
} 

这应该从user对象加载内name财产你的形式。表单是否成功加载?

相关问题