Привет. Как в новом варианте вывода grid таблиц, изменить запрос. То есть вывести данные из двух таблиц. Сделать join к $this->table_name = 'table'; и что бы эти данные попали в $grid_html = $this->traitGetListItemsGridHtml(); ?
github.com/instantsoft/icms2/blob/master/system/controllers/admin/actions/ctypes_datasets.php#L42
В свойство list_callback в колбэке:
$this->list_callback = function ($model) { return $model; };
И там же select() нужных полей, если необходимо.
Ок, спасибо.
Не хочет работать фильтр в колбек функции. Не могу понять почему. В старом варианте грида всё работает нормально в новом $model->filterEqual() не работает. Хотя в отладке запрос выглядет как и положено. А на странице «Нет элементов для отображения». Вот код
<?php class actionPassportHouse extends cmsAction { use icms\traits\controllers\actions\listgrid { getListItemsGridHtml as private traitGetListItemsGridHtml; } private $param; public function __construct($controller, $params = []) { parent::__construct($controller, $params); $this->grid_name = 'house'; $this->table_name = 'prt_akart'; $this->param = $params; $this->list_callback = function ($model) { $model->select('n.KWART'); $model->filterEqual('SK_DOMA',$this->param[0]); return $model; }; } public function getListItemsGridHtml() { $grid_html = $this->traitGetListItemsGridHtml(); return $this->cms_template->renderInternal($this, 'house', [ 'grid_html' => $grid_html, ]); } }
В отладке
SELECT i.*, n.KWART FROM cms_prt_akart i INNER JOIN cms_prt_numbers_kwartirs as n ON i.K_SJE=n.K_SJE WHERE (i.SK_DOMA = '10127') ORDER BY i.id asc LIMIT 35850, 50
Без фильтра $model->filterEqual('SK_DOMA',$this->param[0]); данные выводятся. как и положенно. Все.
Пришёл к выводу, что дело тут в фильтрах и пагинации. Данные выводятся. Но фильтр с пагинацией путают отображение. Позже разберусь.