getDoctrine()->getRepository('KekRozsakFrontBundle:ForumTopicGroup'); // TODO: ORDER the topic list by last post date $topicGroups = $groupRepo->findAll(); return array( 'topicGroups' => $topicGroups, ); } /** * @Route("/{slug}", name="KekRozsakFrontBundle_forumTopicList") * @Template() * @ParamConverter("topicGroup") * * @param KekRozsak\FrontBundle\Entity\ForumTopicGroup $topicGroup * @return array */ public function topicListAction(ForumTopicgRoup $topicGroup) { return array( 'topicGroup' => $topicGroup, ); } /** * @Route("/{topicGroupSlug}/{topicSlug}", name="KekRozsakFrontBundle_forumPostList") * @Template() * @ParamConverter("topic", options={"mapping"={"topicGroup"="topicGroup", "topicSlug"="slug"}}) * @ParamConverter("topicGroup", options={"mapping"={"topicGroupSlug"="slug"}}) * * @param KekRozsak\FrontBundle\Entity\ForumTopicGroup $topicGroup * @param KekRozsak\FrontBundle\Entity\ForumTopic $topic * @return array */ public function postListAction(ForumTopicGroup $topicGroup, ForumTopic $topic) { // Get the list of posts in the requested topic $postRepo = $this->getDoctrine()->getRepository('KekRozsakFrontBundle:ForumPost'); $posts = $postRepo->findBy( array('topic' => $topic), array('createdAt' => 'DESC') /* TODO: , limit, offset */ ); // Create an empty post object for posting $post = new ForumPost(); $form = $this->createForm( new ForumPostType( $topicGroup->getId(), $topic->getId() ), $post ); $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $form->bind($request); if ($form->isValid()) { $post->setCreatedAt(new \DateTime('now')); $post->setCreatedBy($this->get('security.context')->getToken()->getUser()); $post->setTopic($topic); $em = $this->getDoctrine()->getEntityManager(); $em->persist($post); $em->persist($topic); $em->flush(); return $this->redirect( $this->generateUrl( 'KekRozsakFrontBundle_forumPostList', array( 'topicGroupSlug' => $topicGroup->getSlug(), 'topicSlug' => $topic->getSlug(), ) ) ); } } return array( 'topicGroup' => $topicGroup, 'topic' => $topic, 'posts' => $posts, 'form' => $form->createView(), ); } }