made the code more composer friendly
This commit is contained in:
71
src/twig.php
71
src/twig.php
@@ -1,32 +1,67 @@
|
||||
<?php
|
||||
|
||||
//Twig
|
||||
function view($name = '', $moreData = []) {
|
||||
global $config, $data; // Use the globally included $config
|
||||
declare(strict_types=1);
|
||||
|
||||
if (!empty($moreData)){
|
||||
use Twig\Environment;
|
||||
use Twig\Loader\FilesystemLoader;
|
||||
|
||||
/**
|
||||
* Render a Twig view.
|
||||
*
|
||||
* @param string $name Template name without extension (e.g. "index")
|
||||
* @param array $moreData Additional variables to merge into template context
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function view(string $name = '', array $moreData = []): bool
|
||||
{
|
||||
global $config, $data;
|
||||
|
||||
// Ensure $data is always an array
|
||||
if (!is_array($data)) {
|
||||
$data = [];
|
||||
}
|
||||
|
||||
// Merge additional data
|
||||
if (!empty($moreData)) {
|
||||
$data = array_merge($data, $moreData);
|
||||
}
|
||||
|
||||
$loader = new Twig\Loader\FilesystemLoader(BASEPATH . '/App/views/');
|
||||
$loader->addPath(FRAMEWORKPATH . '/twig', 'novaconium');
|
||||
$loader->addPath(FRAMEWORKPATH . '/views', 'novacore');
|
||||
$loader->addPath(BASEPATH . '/App/templates', 'override');
|
||||
// ----------------------------------------
|
||||
// Setup Twig
|
||||
// ----------------------------------------
|
||||
|
||||
$twig = new Twig\Environment($loader);
|
||||
$loader = new FilesystemLoader([
|
||||
BASEPATH . '/App/views/',
|
||||
FRAMEWORKPATH . '/twig',
|
||||
FRAMEWORKPATH . '/views',
|
||||
BASEPATH . '/App/templates/override'
|
||||
]);
|
||||
|
||||
// Add config to Twig globally
|
||||
$twig = new Environment($loader);
|
||||
|
||||
// Add global config
|
||||
$twig->addGlobal('config', $config);
|
||||
|
||||
// Check if the template exists
|
||||
if (file_exists(BASEPATH . '/App/views/' . $name . '.html.twig')) {
|
||||
// ----------------------------------------
|
||||
// Render template
|
||||
// ----------------------------------------
|
||||
|
||||
// Direct App override template
|
||||
$appTemplatePath = BASEPATH . '/App/views/' . $name . '.html.twig';
|
||||
|
||||
if (file_exists($appTemplatePath)) {
|
||||
echo $twig->render($name . '.html.twig', $data);
|
||||
return true;
|
||||
} elseif (str_starts_with($name, '@')) { // Check if using framework
|
||||
echo $twig->render($name . '.html.twig', $data);
|
||||
return true;
|
||||
} else {
|
||||
echo "Error: Twig Template ($name) Not Found.";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Namespaced Twig templates like @novaconium/whatever
|
||||
if (str_starts_with($name, '@')) {
|
||||
echo $twig->render($name . '.html.twig', $data);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Fallback
|
||||
echo "Error: Twig Template ($name) Not Found.";
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user