我有一个名为Organization
和Person
的实体。
我已经在OrganizationType
下添加了一个名为PersonType
的自定义字段类型:
class OrganizationType extends AbstractType
{
public function buildForm($builder)
{
$builder->add('name');
$builder->add('description');
}
}
class PersonType extends AbstractType
{
public function buildForm($builder)
{
$builder->add('fullName');
$builder->add('organization, new OrganizationType());
}
}
这适用于此提交的数据结构:
{
"fullName" : "Justin Case",
"organization" : {
"name" : "FooBar Organization",
"description" : "We do bar stuff."
}
}
在我的应用程序逻辑中,这将创建两个实体:Person
实体和Organization
实体,并且它们之间的关联也是持久的。
但是,我希望以organization
字段的标识符形式支持标量值:
{
"fullName" : "Justin Case",
"organization" : 5
}
预期的结果是创建了Person
实体,与ID为Organization
的现有5
的关联也会被链接并保留。
但是,似乎自定义类型只能支持标量值或非标量值,而不能同时支持两者。
我尝试了什么:
我已尝试将数据转换器附加到OrganizationType
($builder->addModelTransformer(...) and $builder->addViewTransformer(...)
两者),希望我可以将提交的数据从标量重新格式化为非标量(反之亦然),具体取决于我的内容自定义类型期望但遗憾的是它不起作用 - 如果自定义类型需要标量,传入非标量值将导致我的变换器根本不被调用。对于视图变换器和模型变换器都是如此)
是否支持Form组件的用例?或者有解决方案吗?