protected function getResult() { /** @var Request $request */ $request = $this->request; $comment = new Comment(); if ($sourceId = $request->request->get('sourceid')) { $source = $this->em->getRepository('MDSSiteBundle:Source')->findOneBy(array('id' => $sourceId)); if ($source) { $comment->setSource($source); } } /** @var Form $form */ $form = $this->getService('form.factory')->create(new CommentFormType(), $comment, array('action' => $this->container->get('router')->generate('mds_site_ajax'))); $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); if ($data->getName() != 'news') { /** @var Comment $data */ $data->setIp($request->getClientIp()); $em = $this->em; $em->persist($comment); $em->flush(); return json_encode(array('sended' => true)); } else { return 'false'; } } /** @var TwigEngine $twig */ $twig = $this->getService('templating'); $render = $twig->render('@MDSSite/Elements/formcomment.html.twig', array('form' => $form->createView())); $result = array('form' => $render, 'sended' => false); return json_encode($result); }
protected function setComments($sourceId) { $qb = $this->em->getRepository('MDSSiteBundle:Comment')->createQueryBuilder('comment'); if ($sourceId) { //TODO Не знаю зачем мне тут нужен был сурс, удалить потом ? //$source = $this->em->getRepository('MDSSiteBundle:Source')->findBy(array('id' => $sourceId)); $commQuery = $qb->innerJoin('comment.source', 'source')->where('source.id =:sourceid')->setParameter('sourceid', $sourceId)->orderBy('comment.id', 'DESC')->getQuery(); } else { //Если не сурсId, то постим news $commQuery = $qb->where('comment.name =:comname')->setParameter('comname', 'news')->orderBy('comment.id', 'DESC')->getQuery(); } /** @var Paginator $paginator */ $paginator = $this->getService('knp_paginator'); $page = $this->request->request->get('page'); $page = $page ? $page : '1'; $comments = $paginator->paginate($commQuery, $page, 10); /* нет коментов - пишем заглушку */ if (!$comments->getTotalItemCount()) { $comments = new ArrayCollection(); $comment = new Comment(); $comment->setName('admin'); $comment->setText('Добрых слов пока не нашлось'); $comments->add($comment); /* если вызываемая страница больше чем их количество */ } else { $this->pages = $comments->getPageCount(); if ($this->pages < $page) { return false; } } $this->comments = $comments; }