src/Controller/NewsController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Pimcore\Model\DataObject;
  5. use Pimcore\Model\DataObject\Language;
  6. use Pimcore\Model\DataObject\News;
  7. use Pimcore\Model\DataObject\Services;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use \Knp\Component\Pager\PaginatorInterface;
  12. class NewsController extends FrontendController
  13. {
  14.     /**
  15.      * @Template
  16.      * @param Request $request
  17.      * @return array
  18.      * @route("/{_locale}/news/{slug}", name="newsDetail",methods={"GET"})
  19.      */
  20.     public function detailAction(Request $request)
  21.     {
  22.         $slug $request->get('slug');
  23.         $newsListing = new News\Listing();
  24.         $newsListing->setCondition('slug like "%' $slug '%"');
  25.         $newsListing->setLimit(1);
  26.         $newsListing->load();
  27.         if(count($newsListing) > 0){
  28.             $news News::getBySlug($slug)->load()[0];
  29.         }else{
  30.             $news false;
  31.         }
  32.         return [
  33.             "news"=>$news,
  34.             "slug"=>$slug,
  35.             "seoNews" => true
  36.         ];
  37.     }
  38.     /**
  39.      * @Template
  40.      * @param Request $request
  41.      * @route("/{_locale}/news", name="newsList",methods={"GET"})
  42.      * @return array
  43.      */
  44.     public function listAction(Request $requestPaginatorInterface $paginator)
  45.     {
  46.         $newsListing = new News\Listing();
  47.         $newsListing->setOrderKey("publishdate");
  48.         $newsListing->setCondition('(publishdate IS NULL OR publishdate < UNIX_TIMESTAMP(NOW()))');
  49.         $newsListing->setOrder("DESC");
  50.         $newsListing->load();
  51.         $countPerPage intval($this->document->getProperty("blogItemCountPerPage"));
  52.         if(!$countPerPage) :
  53.             $countPerPage 24;
  54.         endif;
  55.         $paginator $paginator->paginate(
  56.             $newsListing,
  57.             $request->get('page'1),
  58.             $countPerPage
  59.         );
  60.         return [
  61.             "newsListing"=>$newsListing,
  62.             'paginator' => $paginator,
  63.             'paginationVariables' => $paginator->getPaginationData()
  64.         ];
  65.     }
  66.     /**
  67.      * @Template
  68.      * @param Request $request
  69.      * @return array
  70.      */
  71.     public function lastNewsAction(Request $request)
  72.     {
  73.         $newsListing = new News\Listing();
  74.         $newsListing->setOrderKey("publishdate");
  75.         $newsListing->setCondition('(publishdate IS NULL OR publishdate < UNIX_TIMESTAMP(NOW()))');
  76.         $newsListing->setOrder("DESC");
  77.         $newsListing->setLimit(4);
  78.         $newsListing->load();
  79.         return $this->render('snippets/last-news.html.twig', [
  80.             'newsListing' => $newsListing
  81.         ]);
  82.     }
  83. }