2017-02-28 4 views
0

誰かがページをロードするたびに実行する必要があるすべてのメソッドを配置するクラスを持っていて、InitRoutinesと呼ぶことができます。アドバンスドアプリケーションですべてのページロード時にクラスをロードする方法

yii2基本アプリでは、このようなことをやります。 configtファイルにクラスを追加し、それをブートストラップに追加します。

しかし、私は、共通の/ configに

config.phpの

$config = [ 
    // .. 
    'components' => [ 
     'InitRoutines' => [ 
      'class' => 'app\commands\InitRoutines', 
     ], 
    ], 
]; 

$config['bootstrap'][] = 'InitRoutines'; 

そしてInitRoutinesに私はすべて私を実行するクラスを初期化しているで好ましい、高度なアプリでそれを行う方法を見つけ出すことはできませんページの読み込みが必要です。

InitRoutines.php

私は、高度なアプリで同じ達成することができますどのように
namespace app\commands; 

use Yii; 
use yii\base\Component; 
use app\commands\AppHelper; 
use app\commands\Access; 

class InitRoutines extends Component 
{ 
    public function init() 
    { 
     parent::init(); 
     Access::checkForMaintenance(); 
     Yii::$app->language = AppHelper::getUserLanguageCode(); 
    } 
} 

答えて

0

私は解決策を見つけたと思っていますが、正しい方法であるかどうかはわかりませんが、うまくいくようです。

config.phpの

return [ 
    // ... 
    'components' => [ 
     'InitRoutines' => [ 
      'class' => 'common\commands\InitRoutines', 
     ], 
    ], 
    'bootstrap' => [ 
     'log', 
     'common\commands\InitRoutines' 
    ], 
]; 
+0

は 'のYii \ウェブ\ Controller'から継承されたカスタム' Controller'クラスを作成することを検討してください。そして、あなたのロジックを 'beforeAction'メソッドに入れることができます。 – Beowulfenator

+0

@Beowulfenatorこのソリューションが動作するなら、 'yii \ web \ Controller'を拡張するよりはるかに優れています。これは、生成されたすべてのコントローラの宣言を変更する作業を保存するためです。 – deacs

+0

@deacs yesこのソリューションの主な目的 – Ripper

関連する問題