2016-05-12 55 views
1

我最近新建了Symfony(2.8),我试图在从表单提交图像文件后,用第二个实体的主要颜色填充第二个实体图片。在Symfony2中提交表单后填充第二个实体

现在,我就是这样从控制器做了一个试验:

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(); 

它的工作,但我不认为,颜色应该是在形式或控制器也不是像实体。 那么,我应该如何处理颜色?

回答

1

我心里有两种解决方案,以节省Colors控制器之外:

  1. 创建主义监听器(上prePersist和更新前的)当Image被持久化,将产生Colors

  2. flush之前,调度自定义事件并用EventListener捕获它。被捕获时,执行填充Colors的方法。

的解决方案优势1:Colors将自动为Image生成,无论你是在一个控制器,一个命令,或其他地方。

解决方案2的优点:您可以通过调度自定义事件来更精确地决定何时生成颜色。

+0

谢谢@Terenoth。 - 这么晚才回复很抱歉。 – Frankfurt

相关问题