我正在使用Symfony和FormBuilder创建多个表单。通常,我提供一个平面对象,它包含表单需要访问的所有属性。这很好用。表单用正确的值填充对象,我可以在处理它时将其作为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',
))