将配置注入ActiveDataProvider模型

时间:2017-06-19 10:38:15

标签: php yii2

有没有办法将一些配置注入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;
}

这很有效。 然而,我正在寻找更多"清洁"这样做的方法?

我正在阅读关于依赖注入的内容,听起来我可以用它来做,但是我对这个概念不熟悉并且无法使其工作。

1 个答案:

答案 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是开销。