如何将变量传递到Yii2中的模型?

如何将变量传递到Yii2中的模型?,yii,model,yii2,Yii,Model,Yii2,我在我的一个模型中创建了一个beforeSave()方法,用请求用户的客户端id($user->client\u id)更新字段client\u id)。但是,模型不知道当前用户是谁 我可以使用Yii::$app->user->id,但我认为这是一种不好的做法,必须有更好的方法。当然,我可以将客户机id作为表单中的隐藏字段传递,但这将是一个安全问题 有什么想法吗?你可以使用Yii2client\u id。将其配置为createdByAttribute或updatedByAttribute,由您选

我在我的一个模型中创建了一个
beforeSave()
方法,用请求用户的客户端id(
$user->client\u id
)更新字段
client\u id
)。但是,模型不知道当前用户是谁

我可以使用
Yii::$app->user->id
,但我认为这是一种不好的做法,必须有更好的方法。当然,我可以将
客户机id
作为表单中的隐藏字段传递,但这将是一个安全问题


有什么想法吗?

你可以使用Yii2
client\u id
。将其配置为
createdByAttribute
updatedByAttribute
,由您选择。

是否需要
Yii:::$app->user identity->client\u id
?我会在保存()之前使用Yii::$app->user->id。我不认为这样做有什么问题。如果你看一下可归咎于BEVAHIOR的文档(由下面的一个答案建议),你会发现它默认使用Yii::$app->user->id。所以,我认为这是有用的,而你觉得这是不好的做法。因此,请取消阻止该视图。@FabrizioCaldarelli:大致上这一行:
不应直接访问请求、会话或任何其他环境数据。控制器应将这些数据注入模型
http://www.yiiframework.com/doc-2.0/guide-structure-models.html
@Dubby当然,但该信息不是访问请求或会话数据,而是用户对象的信息。如果您检查时间戳行为,它会在保存处理程序事件中附加函数。