我有一个包含多个字段的表单。
然后我将DataTransformer
绑定到其中一个。如果我获得数据getViewData
和getNormData
,则变换器可以正常工作。
但是如果我在整个表单上发布这些方法,变换器处理的数据将被完全忽略。
在Form
中,由于以下内容正在覆盖数据
$childrenIterator = new InheritDataAwareIterator($this->children);
$childrenIterator = new \RecursiveIteratorIterator($childrenIterator);
$this->config->getDataMapper()->mapFormsToData($childrenIterator, $viewData);
我的映射器是PropertyPathMapper
。不幸的是,它基于每个孩子的getData
方法。
是否可以绕过viewData
覆盖/实现正确转换的数据而无需编写全局变换器?
答案 0 :(得分:0)
解决方法:
$data = array();
foreach ($form->all() as $k => $el) {
$data[$k] = $el->getData(); // or getNormData or getViewData
}
不幸的是我没有解决方案。
目前的行为不符合我的预期。至少应该提到in the symfony cookbook。
如你所见,我有同样的问题。我写了一个测试用例,以确保我不会误解变压器的工作原理。我后来找到了你的问题。
我的测试用例: https://github.com/SimonHeimberg/SymfonyFormForm_DataTransformer_Demo