Доброго дня Николай. Спасибо за помощь. Да в данном случае array(«id» => $modx->getPlaceholder('id') id еще не подгружен. Такая конструкция [[!Gallery?album=[[!getResourceField?id=[[+id]]]].................]] не работает через аякс. Попробую объяснить что вообще хочу. У меня есть список ресурсов, которые нужно подгружать через аякс, после ввода в input фразы, часть фразы содержащей pagetitle ресурса. В общем с фильтрацией ресурсов по pagetitle. Есть сниппет ajaxResources <?php if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}

$action = filter_input(INPUT_POST,'action');

if (empty($action)) {return;}

$res = ''; switch ($action) { case 'getResources': $params = array(); $params['tpl'] = '@INLINE <div id="[[+id]]" class="pic">[[+idx]]</div> <div class="item"> <span class="title">Гостиница [[+pagetitle]]</span> <div class="foto">'. $modx->runSnippet("Gallery", array("album" => $modx->runSnippet("getResourceField", array("id" => [[+id]], "field" =>"GalleryAlbum", "isTV" =>"1")) , "thumbTpl" => "hotelTplThumbtop","limit" => "1")).' </div> <div class="inf"> <span class="adress">Адрес: [[+tv.adress]]</span><div class="clear"></div> <span class="metro">[[+tv.metro_vo]]</span><div class="clear"></div> <span class="metro">[[+tv.metro_p]]</span><div class="clear"></div> <a class="grey" href="/[[+alias]]/">О гостинице</a> <a class="blue" href="/">Номера</a> <a class="blue" href="/">Цены</a><div class="clear"></div> <p class="trans">[[+introtext]] </p> </div> <div class="buttons"> <span class="price">От [[+tv.min_price]] руб/сутки</span><div class="clear"></div> <a class="onmap"><img src="images/onmap.png"/> Показать на карте</a> <a class="buy" href="/"><img src="images/buy.png"/> Забронировать</a> <a class="show"><img src="images/show.png"/> Раскрыть</a><div class="clear"></div> </div>

</div> <div class="clear"></div>'; $ltr = filter_input(INPUT_POST,'ltr'); $params['where'] = '{"pagetitle:LIKE":"%'.$ltr.'%"}'; $params['includeTVs'] = '1'; $params['processTVs'] = '1'; $params['parents'] = filter_input(INPUT_POST, 'parents', FILTER_SANITIZE_NUMBER_INT); $res = $modx->runSnippet('getResources', $params); break; } if (!empty($res)) { die($res); } Есть input <input id="findit" class="input" onfocus="if(this.value=='Поиск гостиницы по названию') this.value='';" onblur="if(this.value=='') this.value='Поиск гостиницы по названию';" value="Поиск гостиницы по названию" data-action="getResources" data-tpl="hotelTpl" data-parents="100" data-ltr=""/> <div id="input"></div> аякс обработчик $('div#findit_eaner input').livequery('change',function(){ $x = $('div#findit_eaner input').val(); $('div#findit_eaner input').replaceWith('<input class="input" data-action="getResources" data-tpl="hotelTpl" data-parents="100" data-ltr="'+$x+'" />'); // Ajax post-запрос к странице, выдающей ресурсы (в ней сниппет ajaxResources)

$.ajax({ async: false, url:"/find.php", type: "POST", data: $('div#findit_eaner input').data(), success: function(data) {

$('#input').append(data); } })

})

И какое-то у вас хитрое смешение инлайн-чанка и чистого пхп (вызов $modx->runSnippet). Чтобы вы понимали, в array(«id» => '[[+id]]' будет передано не значение плейсхолдера [[+id]], а просто текст [[+id]], который кроме как текстом и не станет ничем. Тогда уж array(«id» => $modx->getPlaceholder('id'), вот только я очень сомневаюсь, что на тот момент +id уже будет зафиксирован. Если у вас там для каждого документа галерея в отдельности, то тогда уже и передавайте в шаблон [[!Gallery?album=[[!getResourceField?id=[[+id]]]].................]]

А откуда у вас должен взяться [[+id]] и чей это айдишник?

Нужна помощь, толи взгляд притупился. Не могу понять где ошибаюсь… Пишу аякс компонент на основе GetResources и в параметрах шаблона хочу получить id подгружаемых ресурсов, для вывода галереи по простому мне нужен Id галереи для вывода фото. Проблема не могу корректно получить в данной конструкции [[+id]] $params['tpl'] = '@INLINE <div id="[[+id]]" class="pic">[[+idx]]</div> <div class="item"> <span class="title">Гостиница [[+pagetitle]]</span> <div class="foto">' . $modx->runSnippet("Gallery", array("album" => $modx->runSnippet ("getResourceField", array("id" => '[[+id]]', "field" =>"GalleryAlbum", "isTV" =>"1")) , "thumbTpl" => "hotelTplThumbtop","limit" => "1")).'
</div> <div class="inf"> <span class="adress">Адрес: [[+tv.adress]]</span><div class="clear"></div>

Да, должны быть. Не просто же так у нас процессоры getdata.class.php, getlist.class.php и т.п.

спасибо, то что надо… значить все файлы процессоров должны быть *.class.php

Потому что название файла должно быть test.class.php, а не test.php Просто test.php — это устаревший флэт-процессор, он возвращает то, что у него в return. А у вас return 'myTestProcessor';

Gist ошибки нет. в логах все чисто. я получаю статус 200 и в ответ название процессора, а не worked п.с. чистый копипаст названия такие потому что просто разбираюсь, если вы об этом

  1. Давайте полный листинг вызываемого кода, включая коннектор (даже если все повторяется). Мы не можем гадать измененный у вас код или нет (выкладывайте куда-нибудь на гист или типа того).
  2. Приведите четко сообщение ошибки. Копипаст, плиз, а не «дословный перевод».
  3. На сам modProcessor никаких прав не надо. Ошибка — это не всегда отсутствие доступа.

Cпрошу наверное я вот что ) Скажу сразу тема понятное дело облизана в интернете со всех сторон, но нет ничего лучше примера кода поэтому я нашел на Гите modHybridAuth и начал изучать. и мне интересно вот что. есть connector.php который запускает процессор 'profile/auth'. Этот процессор расширяет процессор modProcessor. У меня вроде все и получилось но вот ответ приходит имя процессора, я подозреваю что проблема доступом к modProcessor. Что не так? Код один в один за исключением названия пакета) class myTestProcessor extends modProcessor { public function process(){ return 'done'; } } return 'myTestProcessor';