Поддержка по экзаменам написал: DAkentyev , дайте, пожалуйста, ссылку на сообщение, которое вы цитируете. По одной цитате не понятен контекст всего обсуждения.
Поддержка по экзаменам написал: Похоже есть какая-то ошибка в обработке адресов на вашем тестовом сервере, и это вопрос уже не связанный с экзаменом.
"Наш" тестовый сервер развернут из образа демо-сервера, предоставленного Bitrix и рекомендованного для подготовки к экзамену на странице Подозреваю, что проблема в том, что версия БУС в демо-сервере -- 15.5.1, а на bitrixlabs скорее всего 18-ая.
Проверила ваш пример кода на образе, который используется на экзаменах. Ошибка не воспроизводится. Скрин цепляю.
Иван Малышин написал: Ни js ни отложенные функции там не нужны
Не совсем понятно, как тогда отображать надпись "Ваше мнение учтено". Мы не можем поместить обработчик запроса в result_modifier, т.к. это кешируемый файл и не сможет принять get или post параметры, не прописанные в параметрах компонента. А в условиях задачи явно сказано только про параметр "AJAX или не AJAX запрос". Следовательно, обработчик должен стоять в component_epilog, который гарантировано выполняется. Но на момент его выполнения шаблон компонента уже отображен и чтобы в его середину вставить надпись о результате нужно использовать как минимум JS, или я чего-то не понимаю?
Нужно вывести результат выполнения ajax-запроса. Просто добавить надпись при помощи js по клику или другому событию будет не правильным решением.
Иван Малышин написал: Ни js ни отложенные функции там не нужны
Не совсем понятно, как тогда отображать надпись "Ваше мнение учтено". Мы не можем поместить обработчик запроса в result_modifier, т.к. это кешируемый файл и не сможет принять get или post параметры, не прописанные в параметрах компонента. А в условиях задачи явно сказано только про параметр "AJAX или не AJAX запрос". Следовательно, обработчик должен стоять в component_epilog, который гарантировано выполняется. Но на момент его выполнения шаблон компонента уже отображен и чтобы в его середину вставить надпись о результате нужно использовать как минимум JS, или я чего-то не понимаю?
Нужно вывести результат выполнения ajax-запроса. Просто добавить надпись при помощи js по клику или другому событию будет не правильным решением.
Если компонент выполняется в режиме AJAX, то да, конечно. Делаем запрос через BX.ajax, например и выводим результат через JS. Речь идет о компоненте в режиме "без AJAX" в котором клик по ссылке вызывает не AJAX запрос, а переход на страницу компонента с параметром. Чтобы обработать этот параметр до того, как будет выведен текст компонента, надо или отключать кеширование (что запрещено условиями экзамена), либо добавлять этот параметр в вызов компонента (про что ничего не сказано в условиях задачи), либо исправлять сам компонент, что запрещено условиями задачи. Следовательно, обработчик будет запущен после кешируемой части и должен изменить уже выведенный текст. Что делается либо через JS, как у меня сейчас, либо через манипуляции с буфером, что явно чересчур. Но по ссылке утверждается, что "ни js ни отложенные функции там не нужны" Во мне и интересно, каким образом?
DAkentyev, цель задания — проверка навыков использования Ajax-библиотеки, поэтому ветку с вариантом работы без ajax реализовывать во время экзамена не нужно. На боевом проекте, вы правы, без js и component_epilog не обошлись бы) Но для экзамена задача проще.
Поддержка по экзаменам написал: DAkentyev , цель задания — проверка навыков использования Ajax-библиотеки, поэтому ветку с вариантом работы без ajax реализовывать во время экзамена не нужно. На боевом проекте, вы правы, без js и component_epilog не обошлись бы) Но для экзамена задача проще.
Или в экзамене поменялся текст задачи или я не так понимаю эти два пункта задачи
Цитата
Обработчик запроса, будь это обычный режим или AJAX должен быть один и находиться в типовых файлах шаблона компонента. Т.е. запрос всегда должен идти на тот же самый адрес, где и располагается компонент.
и
Цитата
Если включен параметр компонента «собирать жалобы в режиме AJAX», то по клику на ссылку «пожаловаться!» запрос обрабатывается в режиме AJAX, если нет – то обычным GET запросом
Из которых, как я понимаю, следует, что шаблон компонента должен работать в обоих режимах.
В условиях задачи [ex2-97] Разработать простой компонент «Новости по интересам»
дано указание
Цитата
Для решения предоставляются материалы – заготовка компонента, simplecomp.exam-materials. В заготовке создана необходимая файловая структура, и демо-вызов API по выборке. Эти материалы можно не использовать, предоставляются для ускорения решения задания.
Можно ли данную заготовку использовать для решения других задач на создание простого компонента, если в их условиях нет такого прямого указания?
DAkentyev написал: Можно ли данную заготовку использовать для решения других задач на создание простого компонента, если в их условиях нет такого прямого указания?
Дмитрий, можете конкретный пример привести? В общем правиле, везде, где нужно использовать заготовку есть на это указание.
Цитата
DAkentyev написал: Или в экзамене поменялся текст задачи или я не так понимаю эти два пункта задачи
Да, мы с вами про разные задания говорили. По сути задания, которое вы привели: я не могу вам описывать правильное решение. В описаниях также может не быть указания на способ решения. Используйте вариант решения, который не противоречит правилам экзамена.
Уточните, пожалуйста, какая версия платформы БУС будет установлена на экзаменационном сервере? На экзаменационном демо-сервере установлена 15.5.1 и в ней, например, нет метода GetComponent (разбирается в вебинаре, но по документации доступен с 15.5.10) для класса CBitrixComponentTemplate, попытка обновления платформы выливается в несоответствие версий php и MySQL.