Я пытаюсь получить список всех маршрутов, содержащихся в app/Config/routes.php, и показать их на странице администратора. Я могу получить list of controllers с помощью $controllers = App::objects('controller');
, и мне было интересно, можно ли сделать то же самое для маршрутов.Как я могу получить список всех маршрутов CakePHP?
Я попытался использовать подстроки в соответствии с приведенным ниже кодом, но проблемы, которые приходят на ум, прокомментировали маршруты, пробелы и варианты маршрутов, например. ссылки на внешние ресурсы. Я сейчас рассматриваю использование токенизатора php, но я хотел бы знать, есть ли простое и элегантное решение, встроенное в CakePHP.
$source = file_get_contents(APP . 'Config/routes.php');
$startPos = stripos($source, 'Router::connect(');
$routes = array();
while ($startPos !== false) {
$endPos = stripos($source, ';', $startPos + 15);
if($endPos !== false) {
$route = substr($source, $startPos, $endPos - $startPos);
$urlStart = stripos($route, "'");
if($urlStart !== false) {
$urlEnd = stripos($route, "'", $urlStart + 1);
$url = substr($route, $urlStart + 1, $urlEnd - $urlStart - 1);
$routes[] = array('route'=>$route, 'url'=>$url);
}
$startPos = stripos($source, 'Router::connect(', $endPos + 1);
}
}
[** 'Router :: $ routes' **] (http://api.cakephp.org/2.5/class- Router.html # $ routes) – ndm
Большое спасибо @ndm, это именно то, что я искал. Я хотел бы отметить ваш комментарий как ответ, если это возможно. – danialk
Комментарии не принимаются как ответы, только фактические ответы могут. Обратите внимание, что вы также можете ответить на вопрос самостоятельно и принять его позже. – ndm