У меня есть модель с именем Задача, определенная следующим образом (поля, не относящиеся к вопросу, удалены)
<?php
class Model_Task extends Model_Table {
public $entity_code='vscrum_task';
public $table_alias='tk';
function init(){
parent::init();
// debug causes error in Ajax in ATK v4.1.1
// $this->debug(true);
$this->addField('id')->system(true)->visible(false);
$this->addField('task_desc')->mandatory(true)->visible(true);
$this->addField('tasktype_id')->mandatory(true)->refModel('Model_TaskType');
$this->addField('team_id')->system(true)->visible(false);
и тип задачи refModel определен следующим образом (поля, не относящиеся к вопросу, удалены)
<?php
class Model_TaskType extends Model_Table {
public $entity_code='vscrum_tasktype';
public $table_alias='ty';
function init(){
parent::init();
$this->addField('id')->mandatory(true);
$this->addField('name')->mandatory(true);
$this->addField('team_id');
}
}
У меня есть CRUD, который основан на задаче и теперь (благодаря помощи Jancha и Romans по stackoverflow) работает нормально.
Я хочу ограничить параметры в раскрывающемся списке для TaskType, чтобытолько те типы задач, которые определены для команды пользователя.Я попытался поместить addCondition в модель TaskType, ссылаясь на переменную сеанса, которую я ранее запомнил
$this->addCondition('team_id',$p->api->recall('team_id'));
, а также используя прямой вызов значения для вошедшего в систему использования
$this->addCondition('team_id',$p->api->auth->get('team_id'));
, ноэто приводит к отображению штрафа типа задачи в сетке
, но оставляет его пустым для редактирования и добавления в диалоговом окне Ajax.
Если я удаляю строку addCondition из модели TaskType, она показывает все значения в списке, но я всегда хочу, чтобы это ограничивалось подмножеством.
Поскольку это упомянутая Модель, а не Модель, на которой основан CRUD, есть ли какие-либо предложения о том, как заставить это работать так, как ожидалось?
Я попробовал предложение Романа иметь модель, котораяэто TaskType и новая модель, расширенная от той, которая является TaskType_Team с добавленным в нем addCondition следующим образом:
Класс Model_TaskType_Team extends Model_TaskType {function init () {parent :: init ();
$this->addCondition('team_id',$p->api->auth->get('team_id'));
}
, для которого мне нужно было создать подкаталог undel Model с именем TaskType, в противном случае он не нашел новую модель, но конечный результат тот же.Я думаю, что это связано с другой проблемой, которая у меня ранее была, когда диалог Ajax теряет доступ к $ p-> api и поэтому не отображает ограничение (и именно поэтому он отлично работает для сетки на той же странице, что и в ajaxдиалоговое окно, но я не хочу использовать stickyGet для решения этой проблемы в целях безопасности (не хочу иметь возможность изменять URL-адрес для просмотра данных других команд) и переменных сеанса ($ p-> auth-> memorize и $ p-> auth->Напомним) также не кажется работой в этом случае - какие-либо дополнительные предложения?