2

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

我知道如何制作自定义配置文件表单(位于 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

我希望有人能给我一些指示,下一步该去哪里。

4

1 回答 1

0

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

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

在您的表单中,您应该执行以下操作:

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

这应该从表单内的对象加载name属性。user表单是否成功加载?

于 2013-06-26T22:29:39.740 回答