Symfony2 Forms:可以接受标量和非标量值的自定义字段类型?

时间:2014-06-02 23:04:50

标签: php symfony symfony-forms

我有一个名为OrganizationPerson的实体。

我已经在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组件的用例?或者有解决方案吗?

0 个答案:

没有答案