我在使用 symfony2 和 doctrine2 进行表单继承时遇到了问题。事情是这样的:
我有一个实体users
没有什么特别的,只有几个字段,上面有名称、电子邮件等......
FerncoderDevisUserBundleEntityusers:
type: entity
table: null
fields:
id:
type: integer
id: true
unsigned: true
nullable: false
generator:
strategy: AUTO
name:
type: string
length: '45'
nullable: false
我有一个实体craftsMans
这个表与users
实体有一对一的关系。
FerncoderDevisUserBundleEntitycraftsMan:
type: entity
oneToOne:
user:
targetEntity: users
joinColumn:
name: user_id
referencedColumnName: id
table: null
fields:
id:
type: integer
id: true
unsigned: true
nullable: false
generator:
strategy: AUTO
我已经生成了 2 个表单类 usersType
和 craftsmanType
.为了创建我的工匠,我已经完成了我的形式:
class craftsManType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('user', new usersType())
->add('company', 'text')
->add('fieldOfActivities', 'text')
->add('legalForm', 'text')
->add('siret', 'text')
->add('website', 'text')
->add('description', 'textarea')
->add('services', 'textarea')
->add('employee', 'text')
->add('phone', 'text')
;
}
我的表单看起来很酷,直到我想获取字段的值。问题是我的'user'
字段作为数组而不是实体返回。我错过了什么吗?如何从字段生成我的用户对象 user
.我不觉得创建对象可能设置所有属性是最好的方法。
也许我错了。
谢谢
必须设置 data_class 选项以返回对象而不是数组。下面的文档说明,当表单嵌入到另一个表单中时,必须使用 data_class。
文档 : http://symfony.com/doc/current/book/forms.html#book-forms-data-class
在控制器中:
$form->getData()->getUser();