made the code more composer friendly

This commit is contained in:
2025-11-19 00:03:03 -08:00
parent a14df54cd9
commit 466d34c39f
12 changed files with 164 additions and 84 deletions

View File

@@ -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;
}