Привет всем,
Что такое MVC- мы все знаем. Однако MVC Битрикса отличается от этой модели в привычном ее понимании. Controller и View как-то смешаны в одну сущность, и в некоторых компонентах одно не отличить от другого.
Больше всего я не понимаю как взаимодействуют события и вьюшки. Согласно документации порядок выполнения приложения следующий:
[LIST]
[*]Служебная часть пролога;
[*]Визуальная часть пролога;
[*]Тело страницы;
[*]Визуальная часть эпилога;
[*]Служебная часть эпилога.
[/LIST]
т.е всякая логика отображения задается в шаблонах битрикса, а шаблоны подключаются в визуальной части пролога. Но в некоторых случаях порядок выполнения страницы становится необъяснимым. Например, в дефолтном компоненте sale.order.ajax после успешного сохранения корзины и создания заказа происходит переадресация на страницу благодарности. Данная переадресация задается где-то в шаблоне, т.е в визуальной части пролога. В своем обработчике по факту создания заказа пытаюсь вывести в консоль сообщение, однако из-за переадресации данное сообщение не выводится. Почему один компонент выполняющийся по времени позже другого влияет на его работу? А что, если я внутри обработчика хочу делать инъекцию JS кода в тело страницы? Использовать библиотеку BX? Как?
Вообще, не понимаю как происходит отработка JS и его связь с шаблоном. Есть какой-то BX.setJSList(...); - кто его вызывает?
Вот открываю страницу карточки товара, вижу в Network tabs вызов к [URL=http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php]http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php[/URL] с POST параметрами offerid итд. Откуда он вызывается? В script.js нет упоминания полноценного аякс вызова. В самом template.php тоже нет. В каком месте страница говорит Битриксу "отдай мне все,что связано с продуктом productid=123 через [URL=http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php]http://192.168.191.103/bitrix/components/bitrix/catalog.element/ajax.php[/URL] и я ее сам(а) отрисую"?
Чем больше я погружаюсь, тем больше у меня вопросов...