Вызов 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 теги и вызов сниппетов такая ситуация
Извиняюсь, не увидел ответы
Все нормик! Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.