PHP Symfony Forms如何访问嵌套对象中的属性


PHP Symfony Forms How to access Properties in nested objects

我正在使用SymfonyFormBuilder创建多个表单。通常,我提供一个平面对象,它包含表单需要访问的所有属性。这很好用。表单用正确的值填充对象,我可以在处理它时将其作为json发送到Web服务(因此我根本不访问数据库)。但在某些情况下,我从Web服务中得到了必须更新的嵌套对象,或者我必须将嵌套对象(作为json)发送到服务,我想知道是否可以访问表单中嵌套对象的属性。

通常你做

$form = $this->createFormBuilder($myObject)
->add('myProp', 'text', array(
    'label'=>$this->get('translator')->trans('my Property')
))

但在我的情况下,myObject持有另一个对象,其中包含一些属性。所以我需要做这样的事情:

$form = $this->createFormBuilder($myObject)
->add('nestedObj.myProp', 'text', array(
    'label'=>$this->get('translator')->trans('my Property')
))

但不幸的是,这似乎并不奏效。是否有其他解决方案来处理嵌套对象和表单?

字段名中不允许有点(原因在于HTML规范的细节)。但是,您可以覆盖"property_path"选项来自定义使用的属性路径:

$form = $this->createFormBuilder($myObject)
    ->add('myProp', 'text', array(
        'label' => $this->get('translator')->trans('my Property'),
        'property_path' => 'nestedObj.myProp',
    ))