簡體   English   中英

在 Symfony2 中提交表單后填充第二個實體

[英]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保存在控制器之外:

  1. 創建一個 Doctrine 偵聽器(在 prePersist 和 preUpdate 上),它將在Image持久化時生成Colors

  2. flush之前,調度自定義 Event 並使用 EventListener 捕獲它。 捕獲后,執行填充Colors方法。

方案一的優點:不管你是在Controller、Command還是其他地方,都會自動為Image生成Colors

解決方案 2 的優勢:通過調度自定義事件,您可以更准確地決定何時生成顏色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM