2016-12-21 202 views
1

用戶可以擁有包含許多圖片的相冊,他可以刪除圖片或上傳新圖片。我希望專輯有1張或更多圖片,但不能爲空(0)。因此,在用戶刪除圖片之前,我希望能夠檢查圖片的數量是否超過一個,如果它少於一個,則顯示一個flashbag消息,通知用戶他的相冊中不能有0張照片。刪除元素之前的條件[symfony2]

這我做了什麼:

/** 
* @Security("has_role('ROLE_USER')") 
*/ 
public function avatarUserDeletedAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('ApplicationSonataUserBundle:Avatar')->find($id); 

    if ($this->container->get('security.token_storage')->getToken()->getUser() != $entity->getUser() || !$entity) 
     return $this->redirect($this->generateUrl('avatarUser')); 

    $em->remove($entity); 
    $em->flush(); 

    return $this->redirect($this->generateUrl('avatarUser')); 
    //return $this->redirectToRoute('avatarUser'); 
} 

地址:

/** 
* @Security("has_role('ROLE_USER')") 
*/ 
public function avatarUserDeletedAction(Request $request,$id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('ApplicationSonataUserBundle:Avatar')->find($id); 

    if ($entity == 1) { 
     $request->getSession() 
      ->getFlashBag() 
      ->add('success', 'You cannot have less than 1 picture'); 
    } else{ 
     if ($this->container->get('security.token_storage')->getToken()->getUser() != $entity->getUser() || !$entity) 
      return $this->redirect($this->generateUrl('avatarUser')); 
     $em->remove($entity); 
     $em->flush(); 
     } 
    return $this->redirect($this->generateUrl('avatarUser')); 
    //return $this->redirectToRoute('avatarUser'); 
} 

我有以下錯誤:

注意:Object類應用程序\索納塔\ UserBundle \實體\ Avatar 無法轉換爲int

+2

執行你沒有爲檢查添加任何條件呢。那麼,你想知道如何在代碼中添加條件嗎? –

回答

1

這是怎麼回事?

public function avatarUserDeletedAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('ApplicationSonataUserBundle:Avatar')->find($id); 
    $qb = $em->createQueryBuilder(); 
    $qb->select('count(entity.id)');  
    $qb->from('ApplicationSonataUserBundle:Avatar','entity'); 

    $count = $qb->getQuery()->getSingleScalarResult(); 

    if ($this->container->get('security.token_storage')->getToken()->getUser() != $entity->getUser() || !$entity) 
     return $this->redirect($this->generateUrl('avatarUser')); 

    if($count >= 2) { 
     $em->remove($entity); 
     $em->flush();  
    } 
    else { 
     //generate error indicating user that can't have zero elements in the album 
    } 

    return $this->redirect($this->generateUrl('avatarUser')); 
    //return $this->redirectToRoute('avatarUser'); 
} 
+0

你的代碼工作正常,但是缺少這一行:'$ entityManager = $ this-> getDoctrine() - > getEntityManager();'計數應該是'$ count == 1'。非常感謝你,聖誕快樂:) – Sirius

2

你需要在列表中$entity你實際上是在一個$entity製作條件,計算有多少項目;

你的條件應該在一個int

$entityCount= count ($entity); 
+0

非常感謝你,它的工作。聖誕節快樂 :) – Sirius

相關問題