[Решено] Подмена данных при формировании запросов xPDOQuery?
Пытаюсь из поля products взять массив со списком id и получить их pagetitle и добавить в Grid таблицу. Отдельно этот код работает в консоли:
Выводит список через запятую:
Возможно ли в процессоре getlist.class.php подменять вывод select на отформатированный свой?
$item = $this->modx->getObject('modExtraItem', 'modExtraItem.id');
$productsList = $item->get('products');
foreach($productsList as $product) {
$p = $this->modx->getObject('modResource', $product);
$id = $p->get('id');
$c->innerJoin('modResource', 'modResource');
$c->where(array(
'modResource.id' => $id,
));
$c->select(array($this->modx->getSelectColumns('modExtraItem', 'modExtraItem')));
$c->select(array('modExtraItem.products as products_name'));
}Выводит список через запятую:
Заголовок 1, Заголовок 3, Заголовок 7
Возможно ли в процессоре getlist.class.php подменять вывод select на отформатированный свой?
/**
* @param xPDOQuery $c
*
* @return xPDOQuery
*/
public function prepareQueryBeforeCount(xPDOQuery $c)
{
$query = trim($this->getProperty('query'));
// Подмена результата
$item = $this->modx->getObject('modExtraItem', 'modExtraItem.id');
$productsList = $item->get('products');
foreach($productsList as $product) {
$p = $this->modx->getObject('modResource', $product);
$id = $p->get('id');
$c->innerJoin('modResource', 'modResource');
$c->where(array(
'modResource.id' => $id,
));
$c->select(array($this->modx->getSelectColumns('modExtraItem', 'modExtraItem')));
$c->select(array('modExtraItem.products as products_name'));
}
// Подмена результата
if ($query) {
$c->where([
'name:LIKE' => "%{$query}%",
'OR:category_id:LIKE' => "%{$query}%"
]);
}
return $c;
}Мне нужно в таблице вместо id'шников выводить их заголовки из таблицы modResource. Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я не совсем понял задачи, например, зачем выводить заголовки через запятую, может для вывода в селект.
Можно так:
1. Создаем переменную
2. Получаем список id товаров и заголовки
3. Выводим нужный массив
P.S. Код, не проверял, в комментах набросал, возможно есть ошибки.
В items.grid.js прописано
Не отображается ничего
Вот это поле нужно подменять, но оставить id'шники в таблице. Таблица имеет название products.
Примерно, так:
Теперь в место products подставляем productsTitle
Удаляем ненужный код:
функцию — outputArray
и вот эти строчки тоже ни к чему