我已经搜索了一段时间,但找不到关于DataTransformer
用例的特定文档。当然还有Symfony2烹饪书一章,但它并没有解决我的特定用例。我只能找到关于转换单个字段的信息。
实体
我有两个实体(具有0..n关系)
订单
- priceTotal(其他字段不相关)
订单行
- 金额
- priceFactor
- 每件价格
- 价格总计
用例
我不想每次都在视图中动态计算Order->priceTotal
。这就是为什么我想在OrderLine
上创建一个转换器,在提交时重新计算几个值:
Order->priceTotal
应该是所有OrderLine->priceTotal
的总和OrderLine->priceTotal
应为(amount
*priceFactor
*pricePerPiece
)
由于我不想把这个逻辑放在每个Controller
函数中,我假设DataTransformer
是正确的解决方案(?)。FormType是否为该类型验证的正确级别?
我不认为DataTransformer是您想要的。DataTransformer可以为表单中的一个字段更改提交的内容,但无法访问其周围的任何字段。这可能是您希望使用LifeCycleCallbacks进行的操作。
http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-haslifecyclecallbacks
以下是如何使用LifeCycleCallbacks的示例:
http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html
它不会反映你想做什么,但它会教你什么是LifeCycleCallbacks以及如何使用它们。