coding-challenge-online-shop/src/controller/AbstractDefaultController.php

70 lines
1.8 KiB
PHP
Raw Normal View History

2018-07-15 08:31:24 +02:00
<?php
namespace controller;
use router\link\Link;
use router\Router;
2018-07-15 08:59:24 +02:00
use router\link\LinkCollection;
2018-07-15 08:31:24 +02:00
/**
* This controllers render the frames/default.html.twig
*
* @author kevinfrantz
*
*/
class AbstractDefaultController extends AbstractController
{
protected function render(string $template, array $variables = []): void
{
parent::render($template, $this->addMenuItems($variables));
}
private function addMenuItems(array $variables): array
{
if (array_key_exists('menu_items', $variables)) {
2018-07-15 08:53:15 +02:00
$variables['menu_items'] = array_merge($this->getMenuItems(),$variables['menu_items']);
}else{
$variables['menu_items'] = $this->getMenuItems();
2018-07-15 08:31:24 +02:00
}
return $variables;
}
private function getMenuItems(): array
{
return array_merge([
new Link([], 'home'),
new Link([
Router::CONTROLLER => 'product',
Router::ACTION => 'list'
], 'product list'),
new Link([
Router::CONTROLLER => 'order',
Router::ACTION => 'basket'
], 'basket')
], $this->getUserMenuItems());
}
private function getUserMenuItems(): array
{
if ($this->core->getUser()) {
return [
new Link([
Router::CONTROLLER => 'user',
Router::ACTION => 'logout'
], 'logout')
];
}
2018-07-15 08:59:24 +02:00
return [new LinkCollection('login',[
2018-07-15 08:31:24 +02:00
new Link([
Router::CONTROLLER => 'user',
Router::ACTION => 'login'
], 'login'),
new Link([
Router::CONTROLLER => 'user',
Router::ACTION => 'register'
], 'register')
2018-07-15 08:59:24 +02:00
])];
2018-07-15 08:31:24 +02:00
}
}