webcron/lib/Framework/Controller.php

71 lines
1.7 KiB
PHP
Raw Normal View History

2021-04-06 19:33:20 +02:00
<?php
namespace JeroenED\Framework;
2021-04-06 22:44:39 +02:00
use Doctrine\DBAL\Connection;
2021-04-07 10:10:01 +02:00
use Symfony\Component\HttpFoundation\Request;
2021-04-06 19:33:20 +02:00
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
abstract class Controller
{
private $twig;
2021-04-06 22:20:18 +02:00
private $request;
2021-04-06 22:44:39 +02:00
private $database;
private $kernel;
2021-04-06 19:33:20 +02:00
2021-04-06 22:20:18 +02:00
public function __construct(Request $request, Kernel $kernel)
2021-04-06 19:33:20 +02:00
{
2021-04-08 13:19:33 +02:00
$this->twig = new Twig($kernel);
2021-04-06 22:20:18 +02:00
$this->request = $request;
2021-04-06 22:44:39 +02:00
$this->kernel = $kernel;
2021-04-06 22:20:18 +02:00
}
2021-04-06 22:44:39 +02:00
public function getDbCon(): Connection
{
return $this->kernel->getDbCon();
}
2021-04-07 13:31:57 +02:00
2021-04-06 22:20:18 +02:00
/**
* @return Request
*/
public function getRequest(): Request
{
return $this->request;
}
/**
* @param Request $request
*/
public function setRequest(Request $request): void
{
$this->request = $request;
2021-04-06 19:33:20 +02:00
}
/**
* @param string $template
* @param array $vars
* @return Response
*/
public function render(string $template, array $vars = []): Response
{
2021-04-08 16:34:25 +02:00
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
2021-04-09 15:14:35 +02:00
$vars['flashes'] = $_SESSION['flashes'] ?? [] ;
2021-04-08 16:34:25 +02:00
$_SESSION['flashes'] = [];
}
2021-04-06 19:33:20 +02:00
$response = new Response($this->twig->render($template, $vars));
return $response;
}
2021-04-07 13:31:57 +02:00
public function generateRoute(string $route): string
{
return $this->kernel->getRouter()->getUrlForRoute($route);
}
2021-04-08 16:34:25 +02:00
public function addFlash(string $category, string $content): void
{
$_SESSION['flashes'][] = ['category' => $category, 'content' => $content];
}
2021-04-06 19:33:20 +02:00
}