Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有FOSUserBundle的多个纵断面形状_Php_Symfony_Fosuserbundle - Fatal编程技术网

Php 具有FOSUserBundle的多个纵断面形状

Php 具有FOSUserBundle的多个纵断面形状,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我正在用Symfony 2和FOSUserBundle创建一个应用程序。我已经正确配置了自己的UserBundle。我的用户实体有许多不同类别的属性,例如位置设置、个人设置等。。。所以我想为每个类别制作不同的表单,这样我就可以在不同的页面上显示每个设置类别 我知道如何制作自定义配置文件表单。它在FOSUserBundle文档中,我已经制作了多个表单类型和一个附加控制器,但我无法用当前用户数据填充它。我尝试了以下方法 $user = $this->container->get('sec

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

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

$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格式的

这就是我的服务。yml现在:

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

我希望有人能给我指点下一步的方向。

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

$form = $this->createForm(new InnerCharacteristicsType(), $user);
在表单中,您应该执行以下操作:

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

这将从表单中的用户对象加载name属性。表单是否已成功加载?

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

$form = $this->createForm(new InnerCharacteristicsType(), $user);
在表单中,您应该执行以下操作:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    // Add fields
    $builder->add('name', 'text', array('label' => 'Name:'));
}
这将从表单中的用户对象加载name属性。表单是否已成功加载