Files
kupshop/bundles/KupShop/ContentBundle/Controller/ArticlesController.php
2025-08-02 16:30:27 +02:00

100 lines
3.2 KiB
PHP

<?php
namespace KupShop\ContentBundle\Controller;
use KupShop\ContentBundle\View\ArticlesView;
use KupShop\ContentBundle\View\ArticleView;
use KupShop\KupShopBundle\Routing\TranslatedRoute;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
class ArticlesController extends AbstractController
{
/**
* @TranslatedRoute("/#articles#/{IDb}/{param}/{IDa}/", requirements={"IDb":"\d+", "IDa":"\d+", "param":"(prev|next)"})
* @TranslatedRoute("/#articles#/{IDb}/{slug}/{param}/{IDa}/", requirements={"IDb":"\d+", "IDa":"\d+", "slug":".*", "param":"(prev|next)"})
*/
public function articlePrevNext(Request $request, ArticlesView $view, $IDa, $IDb, $param)
{
$view->setIDb($IDb);
$view->setRequest($request);
$ArticleID = $view->getPrevNext($IDa, $param);
return new RedirectResponse(
path('kupshop_content_articles_article', ['IDa' => $ArticleID])
);
}
/**
* @TranslatedRoute("/#articles#/")
* @TranslatedRoute("/#articles#/{IDb}/", requirements={"IDb":"\d+"})
* @TranslatedRoute("/#articles#/{IDb}/{slug}/", requirements={"IDb":"\d+", "slug":".*"})
*/
public function articlesAction(Request $request, ArticlesView $view, $IDb = null): ArticlesView
{
if ($IDb) {
$view->setIDb($IDb);
}
$this->setArticlesFilters($request, $view);
$view->setRequest($request);
return $view;
}
/**
* @TranslatedRoute("/#articles#/#tag#/{tagId}/", requirements={"tagId":"\d+"})
* @TranslatedRoute("/#articles#/#tag#/{tagId}/{slug}/", requirements={"tagId":"\d+", "slug":".*"})
*/
public function articlesTagsAction(Request $request, ArticlesView $view, int $tagId): ArticlesView
{
$this->setArticlesFilters($request, $view);
$view->setTagId($tagId);
$view->setRequest($request);
return $view;
}
/**
* @TranslatedRoute("/#articles#/#author#/{authorId}/", requirements={"authorId":"\d+"}, module="articles_authors")
* @TranslatedRoute("/#articles#/#author#/{authorId}/{slug}/", requirements={"authorId":"\d+", "slug":".*"}, module="articles_authors")
*/
public function articlesAuthorAction(Request $request, ArticlesView $view, int $authorId): ArticlesView
{
$this->setArticlesFilters($request, $view);
$view->setAuthorId($authorId);
$view->setRequest($request);
return $view;
}
/**
* @TranslatedRoute("/#article#/{IDa}/", requirements={"IDa":"\d+"})
* @TranslatedRoute("/#article#/{IDa}/{slug}/", requirements={"IDa":"\d+", "slug":".*"})
*/
public function articleAction(Request $request, ArticleView $view, $IDa)
{
$view->setIDa($IDa);
$view->setRequest($request);
return $view;
}
private function setArticlesFilters(Request $request, ArticlesView $view): void
{
// razeni produktu
$view->setSort(
$request->get('order')
);
// dynamicke filtry
$view->setDynamicFilter(
$request->get('dynamic_filter', [])
);
}
}