Логотип

Документация по макросам и шаблонам UMI.CMS

Ошибки вызова макроса

Подобные случаи могут происходить, если макросу были заданы неверные параметры, отсутствуют указанные файлы шаблонов или была предпринята попытка обратиться к несуществующему объекту или свойству объекта. Ошибки такого рода недопустимы, так как с клиентской стороны сайта пользователи не должны ничего знать о факте неверного вызова макроса.

TPL-шаблонизатор

При использовании TPL-шаблонизатора косвенным признаком такого рода ошибок иногда может являться появление в тексте итоговой страницы названия макроса виде %имя_макроса (список_параметров)%, вместо результатов его выполнения.

При отладке, для отображения причин, по которым данный макрос не сработал, можно воспользоваться специальным макросом %catched_errors%, который выведет список таких ошибок, появившихся в ходе выполнения макросов на данной странице.

Например, если мы вставим в шаблон следующие строки:

%search insert_form('sample')%
%catched_errors% 

И в папке ~/tpls/users/search/ не будет файла sample.tpl, то вместо формы поиска по сайту мы увидим следующее:

%search insert_form('sample')%

Невозможно подключить шаблон ~/tpls/users/search/sample.tpl

Вторая строка с сообщением об ошибке — это и есть результат выполнения макроса %catched_errors%.

XSLT-шаблонизатор

При использовании XSLT-шаблонизатора эти ошибки будут возвращаться вместо ответа макроса в элементе error. Например, представим следующий вызов:

http://ваш_сайт/udata/catalog/getObjectsList/notemplate/1234

При этом раздела каталога с id=1234 не существует. Тогда мы получим ответ:

<udata module="catalog" method="getObjectsList" generation-time="0.003320">
  <error>Element not found: "1234"</error>
</udata>

При желании на этот случай мы можем описать шаблон (задав соответствие match="udata[error]") и обработать нужным образом результат.