Передача плейсхолдера из плагина в pdoResources
Добрый день. Есть две кастомные таблицы автомобилей (1- марки, 2-модели+дополнительные данные), из которых вывожу Сначала марки, а потом уже модели этой марки. Есть плагин который срабатывает на событие — «OnPageNotFound», в котором я устанавливаю глобальный плейсхолдер carname
Ознакомился с документацией про теги fastField. Пробовал через суперглобальные массиы, но не помогло.
При этом лог одинаковый при обоих вариантах вызова, и при 'where' => '{«car.title»:"[[+carname]]"}' и при 'where' => '{«car.title»:«Kia»}'
<?php
switch($modx->event->name) {
case "OnPageNotFound":
$alias = $modx->context->getOption('request_param_alias', 'q');
$request = ($_REQUEST[$alias]);
$tmp = explode('/', $request);
if ($tmp[1] == 'remont-avto' && count($tmp) >= 2) {
$carname = $tmp[2];
$modx->setPlaceholder('carname', $carname);
$modx->resource = $modx->getObject('modResource', 9);
$modx->request->prepareResponse();
exit;
}
die;
}
Пытаюсь вывести на странице с ID = 9 {$_modx->runSnippet('!pdoResources', [
'loadModels' => 'auto',
'class' => 'masModel',
'leftJoin' => '{
"car": {
"class":"masCar",
"on": "car.id = masModel.car_id"
}
}',
'select' => '{
"masModel": "title_model",
}',
'where' => '{"car.title":"[[+carname]]"}'
'sortby' => 'title',
'showLog' => 1
])}
То он ничего не выводит. Но если на странице просто вывести [[+carname]] то выводит отлично. И если в сниппете изменить 'where' => '{«car.title»:«Kia»}' то тоже срабатывает отлично.В чем может быть моя ошибка? Ознакомился с документацией про теги fastField. Пробовал через суперглобальные массиы, но не помогло.
При этом лог одинаковый при обоих вариантах вызова, и при 'where' => '{«car.title»:"[[+carname]]"}' и при 'where' => '{«car.title»:«Kia»}'
0.0003560: Loaded model "auto" from "/core/components/auto/model/"
0.0007551: pdoTools loaded
0.0000291: xPDO query object created
0.0007801: leftJoined masCar as car
0.0001171: Added where condition: car.title=Kia
0.0000448: Sorted by title, DESC
0.0000029: Limited to 10, offset 0
0.0002601: SQL prepared "SELECT `masModel`.`id` AS `masModel_id`, `masModel`.`car_id` AS `masModel_car_id`, `masModel`.`title_model` AS `masModel_title_model`, `masModel`.`pr_spb` AS `masModel_pr_spb`, `masModel`.`pr_ptz` AS `masModel_pr_ptz` FROM `modx_mas_models` AS `masModel` LEFT JOIN `modx_mas_cars` `car` ON car.id = masModel.car_id WHERE `car`.`title` = 'Kia' ORDER BY title DESC LIMIT 10 "
0.0000820: SQL executed
0.0000861: Total rows: 1
0.0000119: Rows fetched
0.0000281: Returning processed chunks
0.0026929: Total time
4 194 304: Memory usage
Комментарии: 4
А если вот так попробовать:
'where' => '{"car.title":" ~ $_modx->getPlaceholder("carname") ~ "}'
Нет, так будто where вообще не срабатывает, выводит всё, без условия.
Кавычки забыл:
'where' => '{"car.title":"' ~ $_modx->getPlaceholder("carname") ~ '"}'
А вот так просто идеально! Спасибо большое!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.