多个字段和父实体上的数据转换器


Data Transformer on multiple fields and parent entity

我已经搜索了一段时间,但找不到关于DataTransformer用例的特定文档。当然还有Symfony2烹饪书一章,但它并没有解决我的特定用例。我只能找到关于转换单个字段的信息。

实体

我有两个实体(具有0..n关系)

订单

  1. priceTotal(其他字段不相关)

订单行

  1. 金额
  2. priceFactor
  3. 每件价格
  4. 价格总计

用例

我不想每次都在视图中动态计算Order->priceTotal。这就是为什么我想在OrderLine上创建一个转换器,在提交时重新计算几个值:

  1. Order->priceTotal应该是所有OrderLine->priceTotal的总和
  2. 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以及如何使用它们。