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

时间:2013-12-13 10:39:05

标签: php forms symfony formbuilder

我正在使用 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')
))

但不幸的是,这似乎不起作用。是否有另一种解决方案来处理嵌套对象和表单?

1 个答案:

答案 0 :(得分:6)

字段名称中不允许使用点(原因在于HTML规范的详细信息)。但是,您可以覆盖“property_path”选项以自定义已使用的属性路径:

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