Передать ветку функции контроллера в altorouter

У меня есть следующее:

<?php

require __DIR__ . "/vendor/autoload.php";

$router = new AltoRouter();

$loader = new Twig_Loader_Filesystem( array( 'views', 'views/pages', 'views/partial' ) );
$twig   = new Twig_Environment( $loader, array(
'cache'       => 'tmp',
'debug'       => true,
'auto_reload' => true
) );

function handleRoutes($name) {
echo $twig->render($name . '.twig');
}

$router->map( 'GET', '/[*:id]', function ($id) {
handleRoutes($id, $twig);
});

$match = $router->match();

if( $match && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params'] );
} else {
// no route was matched
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}

?>

Функция handleRoutes является должен возьмите название маршрута (например, «о» или «контакт») и передайте его средству визуализации веток. Тем не менее, $ twig не доступен в функции handleRoutes, и я не знаю, как правильно передать ему объект. Я старался:

function handleRoutes($name, $obj) {
echo $obj->render($name . '.twig');
}

$router->map( 'GET', '/[*:id]', function ($id) {
handleRoutes($id, $twig);
});

Но тогда $ twig также не доступен для функции в $ router-> map.

0

Решение

Вы передаете переменные в сторону closures с функцией use например

$router->map( 'GET', '/[*:id]', function ($id) use ($twig) {
handleRoutes($id, $twig);
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector