Опубликовано: 26 июля 20196 г Здравствуйте, товарищи. Хочу чтобы в табличке отображались элементы, которые я передаю в GET параметре. При таком URL: site.ru?ids=5642,452 Такой код не работает (таблица пустая, но генерируется без проблем): {{$ids = \IPS\Request::i()->ids;}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records2', $record->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', array ( $ids )))));}}Если явно поставить значение GET параметра в код вот так: {{$ids = \IPS\Request::i()->ids;}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records2', $record->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', array ( 5642,452 )))));}}То все работает. Отсюда вопрос, как мне GET параметр запихнуть в табличку?
Опубликовано: 27 июля 20196 г array ( $ids )Вы сюда подставляете значение переменной $idsПолучаетсяarray ( '5642,452' )Не похоже на то, что нужно. Используйте explode
Опубликовано: 27 июля 20196 г Автор Пробовал вот так: {{$ids= explode(',', $ids);}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records12', $row->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', $ids ))));}}И вот так: {{$ids= explode(',', $ids);}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records12', $row->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', array( $ids )))));}}Получаю всегда исключение типа OutOfRangeException. Проверял через {expression="gettype($ids)"} и уверен, что подставляется array.
Опубликовано: 27 июля 20196 г {{$where = array();}} {{if isset(\IPS\Request::i()->ids) and \IPS\Request::i()->ids}} {{$ids = !\is_array(\IPS\Request::i()->ids) ? explode(',', \IPS\Request::i()->ids) : \IPS\Request::i()->ids;}} {{$where[] = array(\IPS\Db::i()->findInSet('primary_id_field', array_filter($ids, 'is_numeric')));}} {{endif}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records12', $row->url(), $where);}}Можете писать site.ru?ids=5642,452 или site.ru?ids[]=5642&ids[]=452Если в primary_id_field содержится одно число, то вместо \IPS\Db::i()->findInSet используйте \IPS\Db::i()->in
Здравствуйте, товарищи.
Хочу чтобы в табличке отображались элементы, которые я передаю в GET параметре. При таком URL:
site.ru?ids=5642,452
Такой код не работает (таблица пустая, но генерируется без проблем):
{{$ids = \IPS\Request::i()->ids;}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records2', $record->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', array ( $ids )))));}}Если явно поставить значение GET параметра в код вот так:
{{$ids = \IPS\Request::i()->ids;}} {{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records2', $record->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', array ( 5642,452 )))));}}То все работает. Отсюда вопрос, как мне GET параметр запихнуть в табличку?