<?php
namespace App\Controller\FrontEnd;
use App\Entity\Post;
use App\Entity\UrlPost;
use App\Entity\Category;
use App\Service\RenderBloc;
use Spatie\SchemaOrg\Graph;
use App\Service\CodeService;
use App\Service\MetaService;
use Spatie\SchemaOrg\Schema;
use Doctrine\ORM\EntityManagerInterface;
use App\ModuleHandler\ModuleHandlerManager;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Leogout\Bundle\SeoBundle\Seo\Og\OgSeoGenerator;
use Symfony\Component\String\Slugger\SluggerInterface;
use Leogout\Bundle\SeoBundle\Seo\Basic\BasicSeoGenerator;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class PageCmsController extends AbstractController
{
private $moduleHandlerManager;
private $em;
public function __construct(ModuleHandlerManager $moduleHandlerManager,
EntityManagerInterface $em)
{
$this->moduleHandlerManager = $moduleHandlerManager;
$this->em = $em;
}
// /**
// * @Route("/{_locale}/{slug}", name="page", requirements={"slug"=".+","_locale"="fr|en|de|es|cn|it"}, defaults={"_locale"="fr"}, priority=-1)
// */
/**
* @Route("/{slug}", name="page", requirements={"slug"=".+"}, priority=-1)
*/
public function index(Request $request,$slug)
{
$_locale = $request->getLocale();
$slugs = explode('/', $slug);
if(count($slugs) > 1){
$slug = end($slugs);
}
// if ($slug == 'blog') {
// $result = $this->moduleHandlerManager->handle('NosActualite', $slug);
// return $this->render($result['template'], $result['data']);
// }
if ($slug == 'search') {
$result = $this->moduleHandlerManager->handle('PageSearch', $slug);
return $this->render($result['template'], $result['data']);
}
if ($slug == 'nos-archives') {
$result = $this->moduleHandlerManager->handle('NosArchives', $slug);
return $this->render($result['template'], $result['data']);
}
$slug_info = $this->em->getRepository(UrlPost::class)->findUrlBySlug($slug);
if(!$slug_info){
throw new NotFoundHttpException('Sorry not existing!');
}
// verification lang slug and then switched
$slug_lang = $this->em->getRepository(UrlPost::class)->SwitchLangRoute($slug);
if($slug_lang != null && $_locale != $slug_lang){
$request->getSession()->set('_locale', $slug_lang);
$request->setLocale($slug_lang);
}
if($slug_info->getType() === "Post"){
$result = $this->moduleHandlerManager->handle('PageCms', $slug);
$render = $this->render($result['template'], $result['data']);
}elseif($slug_info->getType() === "Categorie" || $slug_info->getType() === "Sous-categorie" || $slug_info->getType() === 'Sous-sous-categorie'){
$result = $this->moduleHandlerManager->handle('PageCategorie', $slug);
$render = $this->render($result['template'], $result['data']);
}elseif($slug_info->getType() === "Partenaire"){
$result = $this->moduleHandlerManager->handle('PagePartner', $slug);
$render = $this->render($result['template'], $result['data']);
}elseif($slug_info->getType() === "Expression"){
$result = $this->moduleHandlerManager->handle('PageExpression', $slug);
$render = $this->render($result['template'], $result['data']);
}else{
throw new NotFoundHttpException('Sorry not existing!');
}
return $render;
}
}