$ form-> getExtraData()方法有什么用?

ill*_*cal -1 symfony-forms symfony

我熟悉Symfony Form类API。

我没有得到的一件事是这种方法:

/**
 * Returns the extra data.
 *
 * @return array The submitted data which do not belong to a child
 */
public function getExtraData()
{
    return $this->extraData;
}
Run Code Online (Sandbox Code Playgroud)

我无法使用此方法返回任何值。当我尝试发布未映射/无法识别的输入时,它总是返回一个空数组。

请帮助我了解此方法的实际用例。数据何时变为“额外”?

一个代码示例将是理想的。

非常感谢你。

Ahm*_*UTE 6

额外数据包含表单中没有的所有字段的提交值

假设您有一个带有一些子表单的简单表单

$form = $this->createFormBuilder()
     ->add('form_child')
     ->add('submit', SubmitType::class)
     ->getForm();
Run Code Online (Sandbox Code Playgroud)

呈现此表单后,我们将得到类似的内容

<form name="form" method="post">
   <input type="text" id="form_form_child" name="form[form_child]" />
   <button type="submit" id="form_submit" name="form[submit]">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

如果我们提交此表,并试图找回的价值$form->getData()$form->getExtraData()我们将得到类似的东西:

$form->getData()
----------------
array (size=1)
  'form_child' => string 'value_child' (length=11)


$form->getExtraData()
---------------------
array (size=0)
  empty
Run Code Online (Sandbox Code Playgroud)

输入的值form_child存储在其中,data因为我们创建了具有相同名称的表单->add('form_child')

让我们修改客户端表单结构并添加新的输入

...
<input type="text" id="extra_form_child" name="form[extra_child]" />
...
Run Code Online (Sandbox Code Playgroud)

提交带有额外输入的表单后,我们将获得:

$form->getData()
----------------
array (size=1)
  'form_child' => string 'value_child' (length=11)


$form->getExtraData()
---------------------
array (size=1)
  'extra_child' => string 'extra_child_value' (length=17)
Run Code Online (Sandbox Code Playgroud)