-1

すべてのアプリケーションが共通のコード、拡張機能、またはモジュールを共有できる Yii フレームワークでアプリケーションを作成できるように、フォルダー構造とグローバル構成を構築しています。

各アプリケーションにはそのアプリケーションのビジネス レベルがありますが、アプリケーション間で共有できるものはすべて、共通のリポジトリ (モデル、拡張機能、ウィジェットなど) として使用したいと考えています。

たとえば、システムのアクセス許可を制御するためにAuth拡張機能を共有したいのですが、Auth を各アプリケーションの下ではなく共通フォルダーの下に「インストール」したいと考えています。

以下に、構築したいアーキテクチャを示します。

アプリケーションのアーキテクチャ

私はYiiBoilerplateを似たようなものとして見つけましたが、彼らは私たちが望むように Yii を構成していません。

フォルダー構造の希望は次のとおりです。

common/
    css/
    images/
    protected/
        commands/ 
        components/ 
        config/ 
        controllers/ 
        extensions/ 
        models/ 
        views/ 
Application1/
    css/
    images/
    protected/
        commands/ 
        components/ 
        config/ 
        controllers/ 
        extensions/ 
        models/ 
        views/ 

それでは、いくつかのポイントに行きましょう:

  1. ユーザーがアプリケーション X (www.applicationx.com) の下にあり、ログイン ページが「一般的な」構造である場合、次のようなユーザーに表示したいと思います: www.applicationx.com/index.php?r=user/login .

  2. アプリケーション フォルダと共通フォルダの間を簡単に「ナビゲート」できるようにしたいと考えています。

  3. 視覚的な要件と動作が異なるさまざまなアプリケーションがあるため、テーマを使用したくありません。

これについて何か考えはありますか?良いアドバイスはありますか?前もって感謝します!

4

1 に答える 1

1

さて、私はそれを行う方法をいくつか見つけました。

まず、私のフォルダ構造は次のようになります。

common/
    css/
    images/
    js/
    extensions/
        bootstrap/
        auth/
    protected/
        /* Yii Default directory folder*/
Application1/
    css/
    images/
    js/
    protected/
        /* Yii Default directory folder*/

共通フォルダーの下の構成ファイル

return array(
    'import'=>array(
        'common.components.*',
        'common.models.*',
    ),
    'modules' => array(
        'auth',
    ),
    'components' => array(
        'authManager' => array(
            'behaviors' => array(
                'auth' => array(
                    'class' => 'common.modules.auth.components.AuthBehavior',
                    'admins'=>array('admin', 'foo', 'bar'), 
                ),
            ),
        ),
        'user' => array(
            'class' => 'common.modules.auth.components.AuthWebUser',
        ),
        'bootstrap'=>array(
            'class'=>'common2.extensions.bootstrap.components.Bootstrap',
        ),
    ),
);

ログイン

ログインは「共通」の下にあるため、ログイン ページにリダイレクトするには、 を呼び出すだけで、SiteController.phpそこにログイン プロセスを実装して、ユーザーがアクセスしたいアプリケーションを選択できるようにします。

ログイン後、ユーザーをアプリケーション アドレスにリダイレクトします。

$this->redirect(Yii::app()->request->getBaseUrl(true) . "/../" .$App. "/" . "");

アプリケーションフォルダーの下の構成ファイル

アプリケーションの下で、index.phpファイルにはalias共通ディレクトリ用のファイルがあり、それらがまだ「話す」ことができる方法です。

Yii::setPathOfAlias('common', dirname(__FILE__) . $directory);

似たようなことをしたいのですが、わかりにくい場合はお知らせください。必要に応じて、ここにさらに情報を追加します。

于 2013-06-06T04:37:04.250 に答える