AgelxNash/DocLister

Контроллер onetable и idType="parents"

Closed this issue · 2 comments

Так как метод setIDs в этом контроллере не переопределяется, то родители выбираются из site_content, а потом по ним делается выборка уже в таблице, заданной для onetable. По идее это баг, но для компонентов типа SimpleGallery, это уже фича. Возможно стоит как-то упорядочить это поведение.

Не понял вопроса. setIDs определена в абстрактном классе DocLister и только. Если мы используем контроллер site_content, то при вызове метода getChildrenFolder из sitIDs мы уходим сюда. Если же используется контроллер onetable, то уходим уже в другой класс. Не пойму, как мы из onetable вдруг попадаем в site_content...

https://github.com/AgelxNash/DocLister/blob/master/assets/snippets/DocLister/core/DocLister.abstract.php#L241 - вот отсюда путаница пошла. Просто указать таблицу в свойстве table недостаточно, потому что это свойство перезапишется значением параметра. У меня получилось так:

protected $table = 'my_table';

public function __construct(DocumentParser $modx, array $cfg, $startTime = null)
    {
        parent::__construct($modx, $cfg, $startTime); //здесь в свойство table записалось значение site_content, с учетом этого отработал метод setIDs
        $this->table = $this->getTable('my_table'); //приходится заново задавать свойство table
        ...
    }