将配置注入到活动数据提供程序模型



有没有办法将一些配置注入到数据提供程序模型中?

例如,我在活动记录上有这个吸气器设置器

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;
}

这行得通。但是,我正在寻找更"干净"的方式来做到这一点?

我正在阅读有关依赖注入的信息,听起来我可以做到这一点,但是我对这个概念很陌生,无法使其工作。

此问题的可能解决方案之一是:

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。我在这里的实际用例是 模拟用户会话视图的后端网格视图。

我更喜欢在循环中使用自定义值填充模型。覆盖populate()或使用 PHP 可调用注入是开销。

相关内容

最新更新