Парсинг параметров снипета при вызове через Fenom

Добрый день.
Вопрос — ранее когда я вызывал сниппеты в формате
[[snippet? ¶metr=`text`]]
то вместо параметра можно было вставить плейсхолдер или сниппет, который возвращал строку.
Вызываю сниппет в синтаксисе Fenom
{$_modx->runSnippet('snippet',[
'parametr' => 'text'
])}
И теперь вместо значения параметра text не могу использовать сниппет или плейсхолдер. Получаю ошибку на странице. Странно, потому что к полям ресурса достучаться можно через {5 | resource: «pagetitle»} к примеру, а значит параметры все таки парсятся. Вобщем видимо какой-то тонкости я не понимаю.

Ну и немного живого кода, может в нем ошибка.
Вот такой вызов вывода товаров
{$_modx->runSnippet('mypdoPage',[
 	'tpl' => 'oneProduct.tpl'
    'element' => 'msProducts',
    'limit' => 15,
    'sortby' => '',
    'sortdir' => 'DESC',
    'includeTVs' => 'backImage, rating',
    'tplPageWrapper'=>'@INLINE <ul class="pagination">{$prev}{$pages}{$next}</ul>',
    'tplPage' => 'oneCrumb.tpl',
    'tplPageActive' => 'oneCrumbActive.tpl',
    'leftJoin' => '{

		        "localizator" : {

			"class" : "localizatorContent",

			"alias" : "localizator",

			"on" : "localizator.resource_id = msProduct.id"
		}
	}',
'select' => '{ "localizator" : "msProduct.*, localizator.*, msProduct.id" }',
'where' => '{ "localizator.key" : "' ~ ('localizator_key' | option) ~ '"}'
    ])}
Сейчас поле sortby пусто и все работает отлично, если впишу руками какое то поле для сортировки тоже все ок. Но я хочу чтобы значение этого поля получало свои данные из get запроса.

Перед запуском этого сниппета запускаю сниппет
{$_modx->runSnippet('sortItName.php')}
А вот его код
<?php
$request=$_GET['sortby'];
switch($request) {
case "price":
$modx->setPlaceholder('sort', 'Data.price');
    // return("Data.price");
    break;
case "rating":
    return("rating");
    break;
default:
    return("{\"menuindex\":\"DESC\"}");
    break;
}
Здесь два варианта как возвратить данные. Ранее возвращал просто строку (когда использовал не fenom) а сниппет вызывал как значение параметра. Теперь не работает. Решил попробовать выставлять плейсхолдер, а его уже вызывать как значение параметра. Но оба эти вариант прекрасно выводят нужную мне строку на страницу, но если вызвать их как значение параметра внутри сниппета на Fenom — ошибка
{$_modx->getPlaceholder('sort')}
[[+sort]]
Спасибо.
Александр Мельник
26 октября 2017, 06:01
modx.pro
1 325
0

Комментарии: 3

Илья Уткин
26 октября 2017, 10:10
1
+1
{$_modx->runSnippet('mypdoPage',[
 	'tpl' => 'oneProduct.tpl'
    'element' => 'msProducts',
    'limit' => 15,
    'sortby' => $_modx->runSnippet('sortItName.php'),
...
}
    Александр Мельник
    26 октября 2017, 10:18
    0
    так и делаю изначально.
    Ошибка парсинга.
    Я начинаю думать что это связано с тем что в последнем обновлении pdoTools Василилй игрался с регулярными выражениями.
      Александр Мельник
      26 октября 2017, 10:23
      0
      Нет, простите Илья и заочно Василий, я не обратил внимание что Вы вызываете без скобок.
      Спасибо, работает.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3