<?php
/**
* Layout Controller
*
* @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
*/
namespace VisualMedia\LisaBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use VisualMedia\LisaBundle\Controller\BaseController;
use VisualMedia\LisaBundle\Service\BundleProvider;
use VisualMedia\LisaBundle\Service\MenuProvider;
use VisualMedia\MenuBundle\Manager\BaseMenuManager;
/**
* Layout Controller
*/
class LayoutController extends BaseController
{
public const MENU_MAIN = 'main';
/**
* Get Header Menu Key
*
* @return string
*/
public function getHeaderMenuKey(): string
{
return static::MENU_MAIN;
}
/**
* Get Footer Menu Key
*
* @return string
*/
public function getFooterMenuKey(): string
{
return static::MENU_MAIN;
}
/**
* Header Action
*
* @param Request $request
*
* @return Response
*/
public function headerAction(Request $request, String $template = 'header'): Response
{
$provider = $this->get(MenuProvider::class);
$manager = $this->get(BaseMenuManager::class);
if (!$provider->exists($this->getHeaderMenuKey()) && $this->has(BaseMenuManager::class)) {
$manager = $this->get(BaseMenuManager::class);
$manager->getOrCreateMenu($this->getHeaderMenuKey());
$provider->loadFromManagers();
}
$menu = $provider->getMenu($this->getHeaderMenuKey());
return $this->render(sprintf('@VisualMediaLisa/Layout/%s.html.twig', $template), array(
'menu' => $menu,
));
}
/**
* Footer Action
*
* @param Request $request
*
* @return Response
*/
public function footerAction(Request $request, String $template = 'footer'): Response
{
$provider = $this->get(MenuProvider::class);
if (!$provider->exists($this->getHeaderMenuKey()) && $this->has(BaseMenuManager::class)) {
$manager = $this->get(BaseMenuManager::class);
$manager->getOrCreateMenu($this->getHeaderMenuKey());
$provider->loadFromManagers();
}
$menu = $provider->getMenu($this->getFooterMenuKey());
return $this->render(sprintf('@VisualMediaLisa/Layout/%s.html.twig', $template), array(
'menu' => $menu,
));
}
}