Middle Роутинг и контроллеры Обязательно

Роутинг D7: Router и маршруты

Современный роутинг D7 конфигурируется через файлы маршрутов в /local/routes/ и точку входа /bitrix/routing_index.php в настройках веб-сервера. Маршруты связывают URL с методами контроллеров с типизированными параметрами, позволяя отдавать JSON, файлы или HTML-представления (renderView()) без создания физических PHP-файлов.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Класс Router
  • 2
    Определение маршрутов
  • 3
    Параметры маршрутов

Материалы

Проверь себя

Маршрут /api/orders/ работает в Docker-окружении разработчика и отдаёт 404 на проде. Где искать?

В конфигурации веб-сервера: несуществующие пути должны уходить на /bitrix/routing_index.php, а не на urlrewrite.php. Вторая причина — на проде нет секции routing в .settings.php или физический файл по этому пути, который nginx отдаёт раньше маршрута.

Гость открывает публичный маршрут на контроллер и видит JSON со status error вместо страницы. Почему?

У действий контроллера включены префильтры по умолчанию: Authentication, HttpMethod и Csrf. Для публичного GET их нужно снять через -prefilters в configureActions() или атрибутами, оставив HttpMethod.

Чем плох код, который читает параметр маршрута через getCurrentRoute()->getParameterValue() внутри компонента?

Параметры маршрута привязываются к аргументам действия по имени, и там их место. Чтение из текущего маршрута в произвольном месте размазывает знание об адресах по коду; документация прямо не рекомендует этот способ.

Зачем давать маршрутам имена, если ссылки и так можно написать строкой?

Router::route() собирает URL по имени и параметрам, и при смене шаблона адреса в routes/web.php все ссылки меняются сами. Имена в группах склеиваются без разделителя, поэтому точку ставят в конце имени группы.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти