Symfony2模型到实体的映射

Symfony2模型到实体的映射,symfony,model,entity,Symfony,Model,Entity,我目前正在尝试整理我在Smyfony2中的用户注册,大致遵循以下文档: 可悲的是,他们的例子有点简单化 我的用户实体有许多字段,这些字段只在注册期间添加到其中,之后无法在其中更改,因此我将这些字段从我的UserType中分离出来,放入我的RegistrationType中 现在的问题是,Symfony找不到表单请求的任何字段,这些字段位于用户实体中,因为它正在注册模型中查找它们。如何使注册模型指向用户实体? 在documentation示例中,他们避免了所有这些,因为不会将“条款和条件”复选框添

我目前正在尝试整理我在Smyfony2中的用户注册,大致遵循以下文档: 可悲的是,他们的例子有点简单化

我的用户实体有许多字段,这些字段只在注册期间添加到其中,之后无法在其中更改,因此我将这些字段从我的UserType中分离出来,放入我的RegistrationType中

现在的问题是,Symfony找不到表单请求的任何字段,这些字段位于用户实体中,因为它正在注册模型中查找它们。如何使注册模型指向用户实体? 在documentation示例中,他们避免了所有这些,因为不会将“条款和条件”复选框添加到数据库中

e、 g.他们使用:

$builder->add('user', new UserType());
但正如我提到的,它只有我希望用户在注册后编辑的字段

我尝试了data_类,但它抱怨Form\Model\Registration不是Entity\User类型

当您试图为单个实体嵌入一些表单时,这似乎是一个非常常见的问题,但文档中并未涵盖它


不,我不想使用FoSUserBundle。

实际上,对于同一个模型类,有几个表单类型是可能的,而且非常容易。您可以让RegistrationType包含许多字段,然后让UserType只包含其中的一些字段。两者使用相同的用户模型。

您应该查看FOSUserBundle的源代码。它正是你想做的。你应该能够很容易地模仿它。遗憾的是,他们在文档中没有提到它,因为这是你在使用类型时首先要做的事情。e、 g.一个你不想添加到数据库中的字段不太常见。不确定FoSUserbundle对我有多大帮助,因为它基本上从过于简单的文档变成了过于复杂的示例。这是一个非常抽象的示例,我建议从那里开始:]我愚蠢地期待着不必在不同的地方重新创造我的能手和二传手。你这是什么意思?用户实体中有所有的getter和setter。在表单类型中,您只需为用户字段创建表单字段;然后它尝试在注册模型中查找getDisplayName,而不是用户实体。创建表单时是否将用户实体传递给表单?我将UserType注入RegistrationType,将RegistrationType注入RegistrationController。Entity\User被指定为UserType的setDefaultOptions中的data_类。