[英]Populate a second entity after a form submit in Symfony2
我最近是新的 Symfony (2.8) 並且我正在嘗試,在從表單提交圖像文件之后,用圖像的主要顏色填充第二個實體。
現在,我只是從控制器進行了這樣的測試:
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($image);
$extractor->setImage($image->getFile());
$palette = $extractor->extractPalette();
foreach($palette as $color => $weight){
$imageColor = new Color();
$imageColor->setImage($image);
$imageColor->setRgb($color);
$imageColor->setWeight($weight);
$em->persist($imageColor);
}
$em->flush();
它正在工作,但我不認為顏色應該在表單或控制器中,也不是圖像實體。 那么,我應該如何處理顏色?
我有兩種解決方案可以將Colors
保存在控制器之外:
創建一個 Doctrine 偵聽器(在 prePersist 和 preUpdate 上),它將在Image
持久化時生成Colors
。
在flush
之前,調度自定義 Event 並使用 EventListener 捕獲它。 捕獲后,執行填充Colors
方法。
方案一的優點:不管你是在Controller、Command還是其他地方,都會自動為Image
生成Colors
。
解決方案 2 的優勢:通過調度自定義事件,您可以更准確地決定何時生成顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.