venom/src/Venom/Views/VenomRenderer.php

52 lines
1.3 KiB
PHP

<?php
namespace Venom\Views;
use Venom\Config;
use Venom\Venom;
class VenomRenderer
{
private Venom $venom;
private ?RenderController $controller;
private string $templateData = '';
private string $baseTemplate = '';
private string $templateDir = '';
private string $assetsDir = '';
public function __construct(Venom $venom)
{
$this->venom = $venom;
}
public function render(): void
{
if ($this->controller) {
ob_start();
$this->controller->render();
$this->templateData = ob_end_clean();
}
$this->loadBasicTemplate();
}
public function loadBasicTemplate(): void
{
if (file_exists($this->templateDir . $this->baseTemplate)) {
include_once $this->templateDir . $this->baseTemplate;
} else {
echo "Base Template not found...";
echo $this->templateData;
}
}
public function init(?RenderController $controller): void
{
$this->controller = $controller;
$data = Config::getInstance()->getRenderer();
$this->baseTemplate = $data['baseFile'] ?? 'base.php';
$this->templateDir = __DIR__ . '/../../../tpl/' . $data['theme'] . '/';
$this->assetsDir = __DIR__ . '/../../../public/theme/' . $data['theme'] . '/';
}
}