有没有办法将函数应用于Yii2中的所有请求和查询?
我想替换所有这些字符的特定字符。
我正在使用Yii2高级应用
感谢。
这是配置文件:
$config = [
'language' => 'en',
'components' => [
'request' => [
'cookieValidationKey' => 'something',
],
'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
];
return $config;
答案 0 :(得分:5)
如果没有在每个请求上扩展自定义代码,可以像这样执行(将其添加到您的应用程序配置中):
return [
'on beforeRequest' => function () {
if (!Yii::$app->get('user', false)) {
return;
}
$user = User::getCurrent();
if ($user) {
Yii::$app->setTimeZone($user->time_zone);
}
},
'on afterRequest' => function () {
...
},
];
根据您需要执行代码的时间(请求之前或之后),相应地使用'on beforeRequest'
或'on afterRequest'
。
答案 1 :(得分:2)
yii2有一个request component。您可以扩展yii\web\request
并定义自定义实现。
[
...
'components' =>
'request' => [
'class' => '\common\MyRequest',
'addGeoLocationForExample' => true,
]
...