在 atk4 中,我喜欢用一列扩展 CRUD,该列是模型中可用列的数组中的查找。获取catshop_id已经可用的类别名称(catshop)。但是 catshop 只能作为数组使用。
型号为:
class Model_CatLink extends Model_Table {
public $table='catlink';
function init() {
parent::init();
$this->addField('catshop_id');
$this->addField('margin_ratio');
}
}
在页面上我有:
$catshop=array(1=>'cat1',2=>'another cat 2',...,123=>'top cat');
$c=$p->add('CRUD');
$m=$this->add('Model_CatLink');
$c->setModel($m);
现在网格显示 catshop_id 和 margin_ratio 字段。使用 catshop_id 我想查找 $catshop 中可用的类别标题。这个 $catshop 数组实际上是从另一个 mysql 平台检索的,因此无法加入。
如何用 catshop 列扩展 crud? 到目前为止,我尝试的是使用 addExpression 扩展模型本身......无法让它工作。
我想是这样的,首先将其添加到模型中:
$self=$this;
$this->addExpression('catshop')->set(function($select) use ($self){
return $self->catshop[$self->get('catshop_id')];
});
然后在页面上将 $catshop 传递给模型:
$catshop=array(1=>'cat1',2=>'another cat 2',...,123=>'top cat');
$c=$p->add('CRUD');
$m=$this->add('Model_CatLink');
$m->catshop=$catshop;
$c->setModel($m);
然后我想在 $c->setModel($m) 之前将值添加到模型中,尽管我不确定如何进行。
我正在寻找的结果是一个 CRUD,它显示 catshop 字符串,还允许使用 catshop 数组中的下拉构建更改 catshop_id。