52 lines
1.3 KiB
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'] . '/';
|
||
|
}
|
||
|
}
|