我有一个这样定义的名为 Task 的模型(与删除问题无关的字段)
<?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 下拉列表中的选项限制为仅为用户团队定义的那些任务类型。我尝试在引用我之前记住的会话变量的 TaskType 模型中添加一个 addCondition
$this->addCondition('team_id',$p->api->recall('team_id'));
并且还使用直接调用登录使用的值
$this->addCondition('team_id',$p->api->auth->get('team_id'));
但这会导致在网格中很好地显示任务类型
但在 Ajax 对话框中为 Edit 和 Add 保留它为空。
如果我从 TaskType 模型中删除 addCondition 行,它会显示列表中的所有值,但我总是希望将其限制为一个子集。
由于这是参考模型而不是 CRUD 所基于的模型,因此有什么建议可以让我按预期工作吗?
我尝试了 Roman 的建议,即拥有一个 TaskType 模型和一个从 TaskType_Team 扩展的新模型,其中 addCondition 像这样
类 Model_TaskType_Team 扩展 Model_TaskType { function init(){ parent::init();
$this->addCondition('team_id',$p->api->auth->get('team_id'));
}
为此,我需要创建一个名为 TaskType 的子目录 undel Model 否则它没有找到新模型,但最终结果是相同的。我认为这与我之前遇到的另一个问题相关对话框,但我不想使用 stickyGet 来解决此问题以确保安全(不希望能够修改 URL 以查看其他团队数据)和会话变量($p->auth->memorise 和 $p->auth->回想一下)在这种情况下似乎也不起作用 - 有什么进一步的建议吗?