Siemka, próbuje napisać własny Router w PHP i mam problem bo zmienne nie są wysyłane do klasy i klasa zwraca puste wyniki. Ostatnio pisałem w PHP parę lat temu i mogą być jakieś błędy logiczne więc przepraszam za nie z góry.
Fatal error: Uncaught Twig\Error\LoaderError: Unable to find template ".twig"
Jak widać nie może znaleźć szablonu ".twig", a powinno być "home.twig"
index.php
<?php
use PageBuilder\PageBuilder;
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
define('DIR', dirname(__DIR__)."/cshop");
const INCLUDE_PATH = DIR . "/includes/";
const PAGES_PATH = DIR . "/pages/";
require_once(INCLUDE_PATH ."PageBuilder.php");
require_once (DIR."/vendor/autoload.php");
global $twig, $loader, $PageBuilder;
$loader = new FilesystemLoader(DIR. '/view');
$twig = new Environment($loader, [
'cache' => DIR. '/view_cache',
'charset' => "utf8",
]);
$PageBuilder = new PageBuilder;
if (isset($_GET['page']) && $_GET['page'] != "home"){
$Page = $PageBuilder->Trimtext($_GET['page']);
$PageBuilder->Route($Page);
}
$PageBuilder->Route("home");
$PageBuilder->TwigRender("home");
PageBuilder.php
<?php
namespace PageBuilder;
class PageBuilder
{
public function Trimtext($text): string
{
$text = trim($text);
$text = htmlspecialchars($text);
$text = htmlentities($text);
return strip_tags($text);
}
public function Route($page) {
global $page;
$is_file_existing = file_exists(PAGES_PATH.$page.".php");
if($is_file_existing) {
include (PAGES_PATH.$page.".php");
}
else {
include(PAGES_PATH . "error404.php");
}
}
/**
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
* @throws \Twig\Error\LoaderError
*/
public function TwigRender($page): string
{
global $twig, $page;
return $twig->render($page.'.twig');
}
public function __construct() {
if (!($_GET['page']) || $_GET['page'] == NULL) {
header("Location: /?page=".$page);
}
}
}