Я использую AltoRouter с шаблоном Twig. Мой index.php
index.php
require('vendor/autoload.php');
$router = new AltoRouter();
$router->map('GET','/', function(){
require __DIR__ . '/views/index_v.php';
}, 'inicio');
$router->map('GET','/historia', function(){
require __DIR__ . '/views/historia_v.php';
}, 'historia');
$match = $router->match();
if( $match && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params']);
} else {
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
Это прекрасно работает, но я бы хотел изменить свой index.php, чтобы использовать $ match [‘name’] или другой параметр для вызова, например, redirect.php
index.php (изменено)
require('vendor/autoload.php');
$router = new AltoRouter();
$router->map('GET','/', /views/redirect.php', 'inicio');
$router->map('GET','/historia', /views/redirect.php', 'historia');
$match = $router->match();
if( $match && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params']);
} else {
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
redirect.php
$loader = new Twig_Loader_Filesystem(array('views', 'includes', 'includes/languages/en', 'includes/languages/es', 'includes/languages/it', 'includes/languages/zh'));
$twig = new Twig_Environment($loader);
include('includes/languages/'.idioma().'/comunes.php');
include('includes/languages/'.idioma().'/historia.php');
if($match['name'] == 'inicio'){
echo $twig->render('inicio.php', array('textos'=>$textos['idioma']));
}elseif($match['name'] == 'historia'){
echo $twig->render('historia.php', array('textos'=>$textos['idioma'], 'historia'=>$historia['idioma']));
}
Моя идея состоит в том, чтобы использовать один файл redirect.php, который показывает тот или иной шаблон Twit
Является ли это возможным?
Я решил свою проблему с одним index.php
index.php
require('vendor/autoload.php');
$router = new AltoRouter();
$router->map('GET','/', /views/inicio.php', 'inicio.php');
$router->map('GET','/historia', /views/historia.php', 'historia.php');
$loader = new Twig_Loader_Filesystem(array('views', 'includes', 'includes/languages/en', 'includes/languages/es', 'includes/languages/it', 'includes/languages/zh'));
$twig = new Twig_Environment($loader);
include('includes/languages/'.idioma().'/comunes.php');
$match = $router->match();
if( $match && is_callable( $match['target'] ) ) {
echo $twig->render($match['name'], array('textos'=>$textos['idioma']));
} else {
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
Других решений пока нет …