2014-09-08 2 views
1

У меня есть вызов ajax. Я хочу получить кусок этого вызова ajax. В этом фрагменте содержится фрагмент.modx revo вызов ajax не выполняет фрагмент внутри фрагмента

Мой кусок выглядит следующим образом:

<div > this is the content [[!mySnippet]] </div> 

Кажется, что он не выполняет фрагмент кода. It returns this is the content [[!mySnippet]] и не выполненный фрагмент.

Я пробовал getChunk(), parseChunk() кажется неработоспособным. У меня много кусков, поэтому я не хочу создавать ресурсы для каждого куска. Есть ли способ сделать это?

Спасибо, Awlad

ответ

1

Вы призываете пользовательскую конечную точку в вашем AJAX или это страница MODx? Если его настраиваемая конечная точка, например, php-страница, вам нужно включить modx index.php и запустить ее в API_MODE (см. Эту страницу для описания: http://rtfm.modx.com/revolution/2.x/developing-in-modx/other-development-resources/loading-modx-externally).

После того, как вы включили modx, вы сможете сделать $ modx-> runSnippet ('mySnippet'), но вам придется изменить кусок, поскольку делать $ modx-> getChunk ('yourChunk') не будет выполните любые фрагменты внутри него. Если вы хотите использовать один и тот же кусок, вы можете сами проанализировать его после этого;

$snippetData = $modx->runSnippet('mySnippet'); 
$chunkHtml = $modx->getChunk('yourChunk'); 
$finalOutput = str_replace('[[!mySnippet]]', $snippetData, $chunkHtml); 
+0

Я добавил index.php, и у меня есть глобальный объект modx. Мой первоначальный подход состоял в том, чтобы не использовать runSnippet. Но мне кажется, что теперь я должен использовать runSnippet. –

2

str_replace('[[!mySnippet]]', $snippetData, $chunkHtml); - будет временное решение, но если в будущем потребуется полный разбор всех MODx тегов и входных/выходных фильтров я буду советы вам использовать этот код:

// your chunk 
$msg = "<div > this is the content [[!mySnippet:empty=`no data`]] </div>"; 

// Parse all MODX tags in results 
$maxIterations = (integer) $modx->getOption('parser_max_iterations', null, 10); 
$modx->getParser()->processElementTags('', $msg, false, false, '[[', ']]', array(), $maxIterations); 
$modx->getParser()->processElementTags('', $msg, true, true, '[[', ']]', array(), $maxIterations); 

// output result as example 
print $msg; 
+0

Спасибо за ваш ответ. Будет ли он выполнять фрагмент внутри '$ msg'? –

+0

Snippet также является тегом, поэтому он будет обрабатываться как все остальные теги - http://bobsguides.com/revolution-tags.html – Vasis

 Смежные вопросы

  • Нет связанных вопросов^_^