我正在使用 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')
))
但不幸的是,这似乎不起作用。是否有另一种解决方案来处理嵌套对象和表单?
答案 0 :(得分:6)
字段名称中不允许使用点(原因在于HTML规范的详细信息)。但是,您可以覆盖“property_path”选项以自定义已使用的属性路径:
$form = $this->createFormBuilder($myObject)
->add('myProp', 'text', array(
'label' => $this->get('translator')->trans('my Property'),
'property_path' => 'nestedObj.myProp',
))