有没有办法将一些配置注入DataProvider模型?
例如我在ActiveRecord上有这个getter setter
private $_uid
public function getUid(){
return $this->_uid;
}
public function setUid($uid){
$this->_uid = $uid;
}
UID不在表中,需要设置。
$model = new Model(['uid'=>5]);
或
$model = Model::findOne();
$model->uid = 5;
目前我使用getModels()
进行此操作$query = Model::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
foreach ($dataProvider->getModels() as &$models) {
$models->uid = 5;
}
这很有效。 然而,我正在寻找更多"清洁"这样做的方法?
我正在阅读关于依赖注入的内容,听起来我可以用它来做,但是我对这个概念不熟悉并且无法使其工作。
答案 0 :(得分:0)
此问题的可能解决方案之一可能是:
Event::on(Model::className(), ActiveRecord::EVENT_AFTER_FIND, function ($event) {
$event->sender->uid = 5;
});
更新:
@SakuraiEvs执行此任务
这里的uid用于指示我可以使用的前端中的用户ID Yii :: $ app-> user-> id但在后端需要从其他变量设置 如Yii :: $ app-> user-> id是管理员ID。我这里的实际用例是为了 模拟用户会话视图的后端gridview。
我更愿意在循环中用自定义值填充模型。覆盖populate()
或使用PHP Callable Injection是开销。