Вызов fenom обработчика
        Добрый день! Помогите, никак не могу понять, как вызвать обработчик Fenom, чтобы обработать json строку методом json_decode и через foreach назначить переменные. Это пишется в какой-то контроллер modx или каким то методом вызывается fenom через pdoresources? Спасибо! Очень сложно найти именно такую банальную инфу, к сожалению…    
    
    
                                                                                
            Комментарии: 26
{var $array = $json | fromJSON}
{if $array | iterable}
	{foreach $array as $key => $value}
    		{$_modx->setPlaceholder($key,$value)}
	{/foreach}
{/if}
{$_modx->getPlaceholder('key')}            
                Вот куда этот код писать? В чанк? В чанке этот код не работает. Если в контроллер, то в какой? Если в свой, то как его вызвать до загрузки страницы? Везде в этой статье подразумевается, что феном вызвать вообще проще простого, но если я пишу код в чанк, на странице выводится этот код вместо результата.            
                    
                Настройки нужные включены?
В логах пишется, где ошибка в синтаксисе fenom, причем до конкретного символа.
В чанке вместо [[+id]] можно писать {$id}, fenom по умолчанию обрабатывает.
А еще у pdoResources есть параметр &decodeJSON=`1`, который сразу декодирует json, лучше его отключить, если хотите сами обрабатывать.
Я просто не знаю, что вы хотите получить и как, поэтому оперирую общими тезисами. Может в вашем случае код немного изменится.
                    В логах пишется, где ошибка в синтаксисе fenom, причем до конкретного символа.
В чанке вместо [[+id]] можно писать {$id}, fenom по умолчанию обрабатывает.
А еще у pdoResources есть параметр &decodeJSON=`1`, который сразу декодирует json, лучше его отключить, если хотите сами обрабатывать.
Я просто не знаю, что вы хотите получить и как, поэтому оперирую общими тезисами. Может в вашем случае код немного изменится.
                Спасибо большое, очень помогли. Не мог обработать json в чанке, не знал о существовании активированного по дефолту параметра decodeJSON — в документации его нет.            
                    
                Fenom — парсер тегов(грубо говоря). На замену родным [[+pagetitle]]. Ну и плюс новые методы, модификаторы и т.д. То бишь, писать нужно там где использовали [[+]] — чанки, шаблоны, ресурсы. Для этого вам нужно: версия pdoTools с поддержкой Fenom, включить обработку феном тегов в системных настройках и отсутствие «Феном» ошибок на странице в целом(например, распространенный конфликт с метрикой из-за {(i=).            
                    
                Конкретно мой пример — я хочу получить json ответ со списком файлов на яндекс.диске             
                    
                У вас должен быть сниппет, который получит ответ от апи, с помощью него и выводите через $modx->getChunk, либо подключив сервис pdoTools $pdoTools ->getChunk
В самом сниппете можете использовать php-функцию json_decode и в цикле заполнять поля чанка.
И вот в чанке можете уже писать {$placeholder} для обработки fenom
                    В самом сниппете можете использовать php-функцию json_decode и в цикле заполнять поля чанка.
И вот в чанке можете уже писать {$placeholder} для обработки fenom
                Можете мне помочь на платной основе? Скайп sarcopter5            
                    
                Можете мне помочь на платной основе? Скайп sarcopter5            
                    
                Проблема не обработки fenom кода заключалась в том, что я писал код без фигурных скобок.
Писал var $array = $json | fromJSON вместо {var $array = $json | fromJSON}
                    Писал var $array = $json | fromJSON вместо {var $array = $json | fromJSON}
                Ребята, подскажите пожалуйста! Как в ajax файле form.php подключить после вызова чанка обработку fenom тегов и снипетов? Вот содержимое файла form.php 
                    <?php
	if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest' || empty($_POST['action'])) {
		return;
	}
	define('MODX_API_MODE', true);
	require dirname(dirname(dirname(__FILE__))) . '/index.php';
	
	$modx->getService('error','error.modError');
	$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
	$modx->setLogTarget('FILE');
	
	
	if ($_POST['action'] == "1" && isset($_POST['mass'])) {
		//Получаем значение для второго селектора
		$output = $modx->getChunk('mass',array(
            'mass' => strval($_POST['mass']),
            'h' => strval($_POST['h']),
            'l1' => strval($_POST['l1']),
            'l2' => strval($_POST['l2']),
            'l3' => strval($_POST['l3']),
        ));
		$result = array($output, 'success');
	}
	else {
		$result = array('Некорректный запрос', 'error');
	}
	
	if (!empty($result)) {
		die(json_encode($result));
	}            if (!$pdoTools = $modx->getService('pdoTools')) return;            
                Подставлял уже методом тыка в каждую строку, как не читало fenom теги и снипеты, так и не читает. Есть подозрение что где-то упускаю, что-то но не консоль не чего не показывает, ни сам разобраться не могу(            
                    $pdoTools = $modx->getService('pdoTools');
$output = $pdoTools->getChunk('mass',array(
            'mass' => strval($_POST['mass']),
            'h' => strval($_POST['h']),
            'l1' => strval($_POST['l1']),
            'l2' => strval($_POST['l2']),
            'l3' => strval($_POST['l3']),
        ));            
                Спасибо за помощь, но тоже не работает(            
                    
                Такого быть не может, а со стандартными тегами modx'a работает? А то может у вас путь до index.php неправильный            
                    
                Стандартные теги показывает, тобишь переменные которые передаються в чанк h, l1, l2, l3 (показывает через такой вызов 
                    [[+h]])            
                Тогда у вас исключительный случай) Попробуйте еще с файловым чанком, а вдруг…
также проверьте все таки настройки pdoTools, включена ли обработка синтаксиса фенома в чанках и на странице
                    $pdoTools = $modx->getService('pdoTools');
$output = $pdoTools->getChunk('@FILE mass.tpl',array(
            'mass' => strval($_POST['mass']),
            'h' => strval($_POST['h']),
            'l1' => strval($_POST['l1']),
            'l2' => strval($_POST['l2']),
            'l3' => strval($_POST['l3']),
        ));mass.tpl должен лежать в core/elements/также проверьте все таки настройки pdoTools, включена ли обработка синтаксиса фенома в чанках и на странице
                Fenom теги заработали (огромное спасибо!), а сниппеты все так же не обрабатываються (даже в феном вызове)            
                    //Сниппеты из бд в чанках и на странице
{'snippetName' | snippet: [
    ...params...
]}
//Файловые сниппеты в чанках и на странице путь относительно core/elements
{'@FILE snippetName.php' | snippet: [
    ...params...
]}
//API файловые сниппеты
$pdoTools = $modx->getService('pdoTools');
$pdoTools->runSnippet('@FILE snippetName.php', [...params..]);
//API из БД
$pdoTools = $modx->getService('pdoTools');
$pdoTools->runSnippet('snippetName', [...params..]);            
                Спасибо огромное! Буду пробовать            
                    //Сниппеты из бд в чанках и на странице
{'snippetName' | snippet: [
    ...params...
]} Работает! Ты мой спаситель! Прям от души благодарю!
                а fenom теги и вызов сниппетов такая ситуация 
            
                    
            
                Извиняюсь, не увидел ответы            
                    
                Все нормик! Спасибо!            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.