Как установить фильтр в поле, ссылающемся на модель в ATK4

В настоящее время я занимаюсь сложной многоуровневой классификационной системой.

чтобы упростить, я объясню, что я пытаюсь сделать, предоставив теоретические примеры:

У меня есть таблица групп:

group id| group name 1 | A 2 | B 3 | C 

и у меня есть таблица подгрупп:

 subgroup id| group id| sub-group name 1 | 1 | A-aaaa 2 | 1 | A-bbbb 3 | 1 | A-cccc 4 | 2 | B-111111 5 | 2 | B-222222 6 | 3 | C-ONE 7 | 3 | C-TWO 

и у меня есть модель, которая использует эти две таблицы в качестве ссылок:

 class Model_ItemGrouping extends Model_Table { public $entity_code = 'items'; function init() { parent::init(); $this->addField('itemname')->caption('Item Description'); $this->addField('group_id')->caption('Group Name') ->refModel('Model_Groups')->displayField('groupname'); $this->addField('subgroup_id')->caption('Sub Group Name') ->refModel('Model_SubGroups')->displayField('subgroupname'); } } 

теперь, я применяю эту модель к форме на моем коде, как это:

 $form = $this->add('MVCForm'); $form->addSubmit(); $model=$form->setModel('ItemGrouping'); if($model->isInstanceLoaded()) $form->getModel()->loadData(55); // force it to load item id #55 

когда эта форма загружается и отображается, пользователь теперь может редактировать и выбирать другую группу и / или другую подгруппу для элемента.

но я хочу сделать LIMIT набор параметров, которые можно выбрать из выпадающего списка в зависимости от текущего состояния элемента.

если в настоящее время элемент № 55 находится в группе 3, группа должна быть заблокирована для группы 3, а раскрывающийся список подгруппы должен содержать только подгруппы группы 3, а не весь список.

теперь более сложный и конкретный вопрос заключается в следующем:

есть ли способ ДИНАМИЧЕСКИ ЗАБЛОКИРОВАТЬ две модели, на которые ссылаются, в зависимости от состояния элемента:

Model_Groups по полю group_id

а также

Model_SubGroups по полю subgroup_id

только к определенному набору выбранных элементов, используя экземпляр $model и соответствующий addCondition метод addCondition в PHP, а не Front-End JavaScript?

Я представляю что-то вроде этого (изменение моего более раннего фрагмента):

 $form = $this->add('MVCForm'); $form->addSubmit(); $model=$form->setModel('ItemGrouping'); if($model->isInstanceLoaded()) { $form->getModel()->loadData(55); // force it to load item id #55 // if item is of group #2, force references to show options for group #2 $model->getFieldRefModel('group_id')->addCondition('id=',2); $model->getFieldRefModel('subgroup_id')->addCondition('group_id=',2); } 

ПРИМЕЧАНИЕ: getFieldRefModel не существует, и это, конечно, упрощено, просто чтобы предоставить обзор с использованием статических значений, тогда как мне также потребуется динамически передавать номер идентификатора элемента и сначала проверить текущее состояние группировки элемента, прежде чем я на самом деле установил условия фильтра.