2016-02-18 26 views
2

有什麼方法可以將函數應用於Yii2中的所有請求和查詢?Yii2將函數應用於所有請求

我想替換它們中的特定字符。

我正在使用Yii2高級應用程序

謝謝。

這是配置文件:

$config = [ 
    'language' => 'en', 
    'components' => [ 
     'request' => [ 
      'cookieValidationKey' => 'something', 
     ], 
     'authManager' => [ 
      'class' => 'yii\rbac\DbManager', 
      'defaultRoles' => ['guest'], 
     ], 
     'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'showScriptName' => false, 
     ], 
    ], 
]; 

return $config; 

回答

2

yii2有request component。您可以擴展yii\web\request並定義您的自定義實現。

[ 
    ... 
    'components' => 
     'request' => [ 
      'class' => '\common\MyRequest', 
      'addGeoLocationForExample' => true, 
     ] 
     ... 
4

沒有對每個請求延長自定義代碼可以exexuted像這樣(添加到您的應用程序配置):

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'

+0

我已經添加了配置文件的內容。 你能告訴我該如何改變它嗎? – Mojtaba