statiсList вернёт ORM объекты которые привязаны к вызываемому api, т.е \Service\Model\Orm\DeviceDir. Т.е. для получения объектов устройств должно быть своё АПИ, у которого будет объект устройств. Я так понимаю Вы реализуете свой контроллер для админ панели. Если посмотрите в контроллер статей, то там видно, что используется два апи. И ловится GET параметр dir который применяет parent к списку устройств.
$this->dir = $this->url->request('dir', TYPE_STRING);
Проследите цепочку $this->dir
Сначала идёт helperIndex(), а потом actionIndex()
Я подробно рассматриваю вопрос создания контроллеров в этом видео.
Контроллер у меня вроде бы работает, по крайней мере в другом, созданном мною, модуле. Там даже работает getInstance и getSelectList. Различия между модулями лишь в наличии поля 'parent'.
Часть кода админ контроллера:
function __construct()
{
parent::__construct(new \Service\Model\DeviceApi());
$this->dirapi = new \Service\Model\DeviceDirApi();
}
function actionIndex()
{
//Если категории не существует, то выбираем пункт "Все"
if ($this->dir > 0 && !$this->dirapi->getById($this->dir)) $this->dir = 0;
// если выбрана категория
if ($this->dir > 0) $this->api->setFilter('parent', $this->dir);
return parent::actionIndex();
}
function helperIndex()
{
$helper = parent::helperIndex();
$this->dir = $this->url->request('dir', TYPE_STRING);
....
Насколько я понимаю $this->dir = $this->url->request('dir', TYPE_STRING); влияет на выборку устройств при выборе категории. Выборка работает, и категории и устройства создаются. У меня проблема совсем в другом, при добавлении/редактировании устройства, в списке категории выводится лишь Верхний уровень
Если же Вам просто нужна выборка для parent, то можно как вариант либо сделать это через АПИ устройств, либо через ORM Request
$devices = \RS\Orm\Request::make() ->from(new Класс устройст) ->where(array( 'parent' => id родителя ))->objects();
Спасибо, разобрался)
Глупо вышло, нужно было вернуть простейший массив [id] => [title]