2017-06-07 3 views
0

Ich habe ein Wotationssystem auf meinem Discutea Bundle "Forum" implementiert, ich habe versucht und es funktioniert gut, aber nicht auf die gleichen Seiten umleiten, wenn ich über einen Beitrag abstimmen. Zumindest habe ich die Datenbank überprüft und das Wahlsystem funktioniert gut. Ich muss sagen, dass die anderen Funktionen mit Annotationen arbeiten, aber ich weiß nicht, wie ich Annotationen auf Routen verwenden kann, also habe ich es auf meine eigene Weise gemacht.So leiten Sie dies auf Symfony3 um

Das ist meine Funktion, um den Ruf der Nutzer zu erhöhen oder ruhen:

PostController.php:

public function puntuacioAction(Request $request){ 

     $em = $this->getDoctrine()->getManager(); 

     $idPoster = $request->request->get('id_posterUser'); 
     $positive= $request->request->get('positive'); 
     $negative= $request->request->get('negative'); 

     $user= $em->getRepository(User::class)->findOneById($idPoster); 


     $topic = $em->getRepository(Topic::class)->findOneByUser($user->getId()); 

     $puntuacio = $usuari->getReputatio(); 

     if ($positive!= null) { 
      $puntuacio = $puntuacio + 1; 
     } 
     if($negative!= null){ 
      $puntuacio = $puntuacio - 1; 
     } 

     $usuari->setReputacio($puntuacio); 
     $em->persist($usuari); 
     $em->flush(); 

     return $this->forward('DForumBundle:Post:post', array('slug' => $topic->getSlug())); 

    } 

und der Fehler, sagte:

Key " slug "existiert nicht, da das Array leer ist.

Ich bin ziemlich sicher, dass die Rückkehr falsch ist. Ich werde etwas Hilfe schätzen.

EDIT:

ich für diese ersetzen:

public function ScoreAction(Request $request){ 

     $em = $this->getDoctrine()->getManager(); 

     $idTopic = $request->request->get('id_topic');  

     $idPoster = $request->request->get('id_poster'); 

     $positive= $request->request->get('positive'); 
     $negative= $request->request->get('negatiu'); 

     $user= $em->getRepository(User::class)->findOneById($idPoster); 

     $topic = $em->getRepository(Topic::class)->findOneById($idTopic); 


     $score= $user->getReputation(); 

     if ($positive!= null) { 
      $score= $score+ 1; 
     } 
     if($negative!= null){ 
      $score= $score- 1; 
     } 

     $user->setReputation($score); 
     $em->persist($user); 
     $em->flush(); 


     $redirect = $this->generateUrl('discutea_forum_post', array('slug' => $topic->getSlug())); 

     return $this->redirect($redirect); 
    } 

funktioniert jetzt.

+0

überprüfen, was return getSlug merhod – jeriveromartinez

+0

Es gibt den Namen des Themas zurück. – Pillow

Antwort

Verwandte Themen