29 янв. 2015 г., 15:07

Ошибка makeUrl()

Здравствуйте.Бьюсь уже две недели.Установил MODX 2.3.2 sdk. Галерея на аяксе после обновления кэша пишет в лог ошибку (ERROR @ /index.php) `` is not a valid integer and may not be passed to makeUrl(). Страница доступна после перезагрузки до следующего обновления кэша. Буду благодарен за любую идею
Лоуконтекст. Никто вам не сможет помочь, если вы так мало информации выдаете. Во-первых, нужна ссылка на проблемную страницу. Во-вторых, хорошо бы код видеть, где именно проблема возникает. Смысл ошибки только в одном: в метод $modx->makeUrl() передано пустое значение, вместо валидного числового. Но ведь надо еще разобраться почему там пустое значение передано.
Загружаю выбранную галерею:
function loadProject() { if(!ajaxLoading) { ajaxLoading = true; $('.project-details .project-content').load( targetFile + ' div.page', function(xhr, statusText, request) { if(statusText == "success") { showProject(); } if(statusText == "error") { alert("An error as occurred"); ajaxLoading = false; /* ============================================== Если делаю здесь перезагрузку location.reload(); всё работает =============================================== */ } }); } }
Вызываю из шаблона так:
[[!getResources? &level=`1` &limit=`0` &parents=`[[*id]]` &tpl=`base.html-portfolio-item` &includeTVs=`1` &processTVs=`1` &sortdir=`ASC` &showHidden=`1` ]]
При первом обращении после обновления кэша ошибка makeUrl(). Видимо в кэш записывается валидное числовое значение. Далее всё работает до обновления кэша. Пробывал вылавливать ошибку, как описано здесь, Вот такой лог:
[2015-01-30 21:13:02] (ERROR @ /index.php) #0 /pub/home/shorttra/omsk/core/cache/includes/elements/modsnippet/30.include.cache.php(180): modX->makeUrl('', '', Array) #1 /pub/home/****/core/model/modx/modscript.class.php(70): include('/pub/home/short...') #2 /pub/home/****/core/model/modx/modparser.class.php(513): modScript->process('&tv=`base.proje...') #3 /pub/home/****/core/model/modx/modparser.class.php(247): modParser->processTag(Array, true) #4 /pub/home/****/core/model/modx/modresponse.class.php(83): modParser->processElementTags('', '<!DOCTYPE html>...', true, false, '[[', ']]', Array, 10) #5 /pub/home/****/core/model/modx/modrequest.class.php(145): modResponse->outputContent(Array) #6 /pub/home/****/core/model/modx/modrequest.class.php(129): modRequest->prepareResponse() #7 /pub/home/****/core/model/modx/modx.class.php(1412): modRequest->handleRequest() #8 /pub/home/****/index.php(69): modX->handleRequest() #9 {main}
Всё работало на 2.3.2 Traditional… Благодарен за любой совет.
Ajax-ом вызываете?
1. Убедитесь, что у вас обязательно текущий контекст идет (обычно web). 2. Скорее всего у вас неверная последовательность тегов идет. К примеру, отрабатывается какой-нибудь кешируемый тег, для которого значения еще нет. Для получения галереи его значения еще нету. Но потом он еще раз где-то отрабатывается, и MODX уже имеет его значение в кеше, оно уже помогает найти нужную галерею. После сброса кеша опять этой переменной нет. Дайте полный листинг сниппета #30 и того места, где он вызывается.
Всё работало на 2.3.2 Traditional…
P.S.: может в него обновиться? :) Кстати, 2.3.3. вышла.

Добавить комментарий