С версии битрикса 17.5.10 добавился новый функционал по работе с аяксом. Теперь можно вызывать аяксом методы модуля или методы компонента без необходимости выполнения шаблона сайта. То есть по запросу выполнится только немного служебного кода и собственно сам метод.
На клиенте все довольно просто. Мы должны отправить обычный аякс запрос по адресу /bitrix/services/main/ajax.php
В js библиотеке битрикса есть методы которые самостоятельно формируют запрос, запись получается слегка короче, чем при написании запроса другими способами. Я покажу примеры запросов на битриксовой библиотеке и на jquery
Сделали единый роутер на ajax - это хорошо. Сделали подключение на классы модуля - великолепно. Вообще вся эта тема с аяксом в битриксе меня запарила еще пару лет назад. В итоге взяли роутер у симфони, прикрутили обертку над ним и зажили счастливо. В роутах указывается либо компонент с экшеном, либо модуль с классом и экшеном, либо просто класс и экшен. Все роуты в 1 - 2-х файлах, всегда понятно что за что отвечает. Передача параметров... а ну их на фиг. Не всегда они они нужны, точнее редко, и если надо запишем в сессию разок при executeComponent().
Дрёмин Станислав написал: В итоге взяли роутер у симфони, прикрутили обертку над ним и зажили счастливо
Да, тоже собственный роутер для аякса использую. В новом аяксе от битрикс больше нравится именно взаимодействие с модулями. Довольно красиво получается, просто новый файл с классом создал и уже можно запросы слать
Сегодня попробовал! Крайне крутая, удобная штука! Но есть ряд вопросов )
На сколько я понял метод экшена не может генерировать ошибку ? Например мне перед выполнением экшена нужно проверить подключен ли модуль. Я написал ActionFilter для префильтра, который проверят/подключает нужные модуль. Это работает, но это не очень удобно в двух местах делать одно и тоже (при обычном запуске компонента и когда компонент запущен в экшен режиме). Может быть я чего не недопонимаю, как мне сгенерировать ошибку внутри экшена, что бы я мог в обоих случаях использовать один и тот же метод для проверки подключения модулей.
Я пробовал в экшене вернуть Main\EventResult ошибочный, но компонент мой ответил status = success
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».