Similar presentations:
Разработка сайта на Bitrix с использованием роутинга и контроллеров
1. Роутинг
РАЗРАБОТКА С НУЛЯ ИСПОЛЬЗУЯ РОУТИНГ И КОНТРОЛЛЕРЫ2. Обновление
В контроллерах появились методы renderView иrenderComponent
Это позволяет избавиться от urlrewrite и делать всю
маршрутизацию проекта через роутинг и контроллеры
3. Core модуль
Мой модуль - https://github.com/BkycHblu-6oPwuK/beeralex.coreПри установке в local создает urlrewrite.php, моя реализация
подключает routing_index.php моей реализации. В отличии от
битриксового, мой умеет работать с контроллерами вне модулей,
что позволяет все контроллеры располагать в автоподгружаемой
композером области. Например в – local/lib/App
4. Первоначальная настройка
В моей сборке докера выполнитепубликацию nginx файлов, нужно
изменить маршрут обработки bitrix
В _conf/conf.d/snippets/location.conf
найдите блок location @bitrix, нужно
изменить SCRIPT_FILENAME с
bitrix/urlrewrite.php, на
local/urlrewrite.php
5. local/.settings_extra.php
В конфигурации битрикса нужно задать правила подключенияфайлов роутинга, в .settings под ключом «routing»
Роутинг располагается в bitrix/routes, либо в local/routes. Файлы
web.php и api.php, или те что вы указали в конфигурации
роутинга в .settings.php
6. Точка входа в приложение
Index.php файл приложения тоже должен подключатьurlrewrite.php, чтобы роутинг работал сразу с главной страницы
7. Роутинг
Документация - https://docs.1cbitrix.ru/pages/framework/routing.htmlФайлы web.php и api.php должны возвращать замыкание
8.
9. local/views
В целом в битриксе рендер файлов через контроллер - это чтото новое, поэтому я решил располагать страницы в local/views
Пока вот такая структура, возможно что то изменится при
применении этого на реальных проектах
10. Контроллеры
Все контроллеры располагаю в local/lib/App/Http/ControllersКонтроллеры должны быть наследниками
Bitrix\Main\Engine\Controller
Но этот класс хорошо подходит для api запросов, а вот для веба
так себе. При ошибках пользователь будет видеть ошибки в json
формате
11. WebController
В core модуле есть базоваяреализация контроллера для таких
страниц.
\Beeralex\Core\Http\Controllers\W
ebController
В этом контроллере
переопределено поведение при
ошибках
При ошибках происходит
подключение файла
local/views/errors/exceptions.php
Ошибки выводятся и скрипт
прекращает выполнение
12.
13. Helper для renderView
Так же WebController предоставляет метод помощник дляподключения views из local/views
Константа VIEWS_PATH = /local/views/
Путь к файлу строим через точки, а .php расширение файла не
пишем, идейно как в laravel
14. Главная страница
В web.php добавлю маршрут для главной страницыА экшен в контроллере подключает файл – local/views/index/index.php
15. View файл
Файл выглядит вот так, header.php и footer.php можно неподключать, битрикс это сделает сам.
16.
17. Каталог
Каталог комплексный компонент и его маршрут неограничивается адресом /catalog/, а может дополняться id или
кодами разделов и id/кодами элементов.
Поэтому использую параметр search и where условие для
роутинга, чтобы любой маршрут после /catalog/ подходил.
18. catalogAction
Экшен контроллера возвращает вызов методаrenderComponent с параметрами – компонент, шаблон и
arParams
19. Каталог
Либо выносите вызов компонента вlocal/views/catalog/index.php
И в контроллере вызываете view
20. Админка
Подключая файл с помощьюметода renderView, вы по сути
подключаете включаемую
область, настройки компонента
через админку нельзя
редактировать, армитраж
работает.
21. Админка
Подключая компонент черезrenderComponent, параметры
будут отдавать такую ошибку,
армитраж так же будет работать
programming