2016-04-29 35 views
1

我有一個有幾個字段的表單。getViewData與getNormData和DataTransformers - 取決於上下文的不同結果

然後我綁定DataTransformer到其中之一。如果我收到數據getViewDatagetNormData,變壓器就能正常工作。

但是,如果我在整個表格上發佈這些方法,變壓器處理的數據將被完全忽略。

Form數據被覆蓋由於:

$childrenIterator = new InheritDataAwareIterator($this->children); 
$childrenIterator = new \RecursiveIteratorIterator($childrenIterator); 
$this->config->getDataMapper()->mapFormsToData($childrenIterator, $viewData); 

我的映射是PropertyPathMapper。不幸的是,它基於每個孩子的方法getData

是否有可能繞過viewData覆蓋/實現正確轉換的數據,而無需編寫全局變換器?

回答

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

+0

我對他們的跟蹤器提交一個問題:https://github.com/symfony/symfony/issues/18683 – eRIZ

相關問題