[решено] Как передать fenom массив?
Пытаюсь передать в шаблонизатор fenom массив следующим образом:
запускаю сниппет giveFenomArray с кодом:
Подскажите, это особенность связки modx+fenom, или это я делаю что-то не так?
UPD: все прекрасно работает по функции $modx->setPlaceholder('arr',$pls['arr']);
метод $modx->setPlaceholders действительно разбивает весь массив, даже многомерный на ключи и значения, а только потом их передает как строки в шаблон
запускаю сниппет giveFenomArray с кодом:
$pls['arr'] = ['el1','el2'];
$modx->setPlaceholders($pls);
Затем в шаблоне вызываю сниппет и пытаюсь взять плейсхолдер «array»:{$_modx->runSnippet("!giveFenomArray")}
{set $arr = $_modx->getPlaceholder("arr")}
{$arr[0]}
Но в ответ ничего не выводится.Подскажите, это особенность связки modx+fenom, или это я делаю что-то не так?
UPD: все прекрасно работает по функции $modx->setPlaceholder('arr',$pls['arr']);
метод $modx->setPlaceholders действительно разбивает весь массив, даже многомерный на ключи и значения, а только потом их передает как строки в шаблон
Комментарии: 7
Читайте как работает setPlaceholders. Ключи становятся плейсхолдерами, а не массив.
ну ведь это то же само как
Или я не прав?
В документации кстати ничего не сказано про значения, могут ли они быть не типом string.
$modx->setPlaceholders(array(
'arr' => ['el1','el2']
));
ключ 'arr', значение ['el1','el2']Или я не прав?
В документации кстати ничего не сказано про значения, могут ли они быть не типом string.
На самом деле полностью, если разложить вызов, то будет так:
$modx->setPlaceholders(array(
'arr' => array(
0 => 'el1',
1 => 'el2'
)
));
И дальше, вроде в шаблоне используется вот так:{$_pls['arr.0']}
{$_pls['arr.1']}
Да вот посмотрел в исходниках — получается никак не передать массив. Он будет рекурсивно разбит на плейсхолдеры.
Надо перевести массив в строку и сохранить в плейсхолдер — или в json или сериализация.
метод $modx->setPlaceholder прекрасно справляется с передачей массива в fenom.
Так точно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.