return function (RoutingConfigurator $routes) {
// маршруты
$routes->get('/events/{CODE}/',
new PublicPageController('/events/detail.php')
)->name('eventDetail');
$routes->get('/foo/',
new PublicPageController('/foo/detail.php')
)->name('foo');
$routes->post('/bar/',
new PublicPageController('/bar/detail.php')
)->name('bar');
};
При попытке сгенерировать ссылки. На странице /events/test все хорошо.
При попытке сгенерировать ссылки на других страницах получаем TypeError
Код
[TypeError]
Return value of Bitrix\Main\Application::getRouter() must be an instance of Bitrix\Main\Routing\Router, null returned (0)
/home/bitrix/ext_www/sevdev.webdev.rarus-crimea.ru/bitrix/modules/main/lib/application.php:175
#0: Bitrix\Main\Application->getRouter()
/home/bitrix/ext_www/sevdev.webdev.rarus-crimea.ru/index.php:17
Получается - если файл или раздел существуют, то .htaccess файл не подключил файл /bitrix/routing_index.php и генерация ссылок не отрабатывает.
Если, подключить
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/routing_index.php'); в шапке, а не только для отсутствующих файлов, все будет работать Но в этом способе смущает, что в скрипте, в ветке else, если нет совпадения с маршрутом подключается urlrewrite файл и на каждом хите будет обрабатываться. В прошлых версиях мы так никогда не делали.
Вопрос, как правильно использовать генерацию ссылок на любых страницах проекта?