<?php
namespace VisualMedia\BartPageBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use VisualMedia\LisaBundle\Component\ManagerData;
use VisualMedia\LisaBundle\Component\Interfaces\EntityInterface;
use VisualMedia\LisaBundle\Controller\BaseController;
use VisualMedia\PageBundle\Entity\BasePage;
use VisualMedia\PageBundle\Manager\BasePageManager;
use VisualMedia\PageBundle\Service\PageLayoutProvider;
use VisualMedia\TranslationBundle\Service\ChannelProvider;
use VisualMedia\ComponentBundle\Element\widgets\PageComponent;
use VisualMedia\BartBundle\Controller\RootController;
/**
* Page Controller
*/
class PageController extends RootController
{
/**
* @param Request $request
* @return Response
*/
public function homeAction(Request $request): Response
{
$translator = $this->get('translator');
$pageLayoutProvider = $this->get(PageLayoutProvider::getServiceId());
$pageManager = $this->get(BasePageManager::class);
$title = $translator->trans(sprintf('%s.title', ManagePageController::KEY), [], 'pages');
$page = $pageManager->getOrCreatePage(ManagePageController::KEY, [
'title' => $title,
'published' => true,
'indexable' => true,
'browserTitle' => $title,
'metaDescription' => sprintf('%s.', $title),
'layout' => 'home',
]);
return $this->render($pageLayoutProvider->getLayout($page->getLayout()), [
'browser_title' => $page->browserTitle,
'meta_description' => $page->metaDescription,
'meta_keywords' => $page->metaKeywords,
'indexable' => $page->indexable,
'page' => $page,
]);
}
/**
* @param Request $request
* @param string $slug
* @return Response
*/
public function viewBySlugAction(Request $request, string $slug = null, EntityInterface $page = null): Response
{
//dd($request,$slug);
$translator = $this->get('translator');
$pageLayoutProvider = $this->get(PageLayoutProvider::getServiceId());
$pageManager = $this->get(BasePageManager::class);
$channelProvider = $this->get(ChannelProvider::class);
// Allow to show unpublished pages on preview POST.
$published = $request->request->get('page') === null;
$managerData = new ManagerData([
'slug' => $slug,
'published' => $published,
'channel' => $channelProvider->getCurrentChannel(),
]);
// Use forwarded page, or get new one by slug and channel.
if (null === $page = $page ?: $pageManager->getFirst($managerData)) {
throw $this->createNotFoundException($translator->trans('page.not_found', [], 'exception'));
}
if($page->components){
$components = PageComponent::createComponents($page);
$styles = <<< _END
<style>
.main .col, .main .row {
border: dashed 1px #CCC;
padding: 20px;
}
</style>
_END;
$styles="";
return $this->render("@VisualMediaPage/Page/components.html.twig", [
'browser_title' => $page->browserTitle,
'meta_description' => $page->metaDescription,
'meta_keywords' => $page->metaKeywords,
'indexable' => $page->indexable,
'page' => $page,
'components' => $components,
'styles' => $styles
]);
}
return $this->render($pageLayoutProvider->getLayout($page->getLayout()), [
'browser_title' => $page->browserTitle,
'meta_description' => $page->metaDescription,
'meta_keywords' => $page->metaKeywords,
'indexable' => $page->indexable,
'page' => $page,
]);
}
}