2016-06-23 4 views
0

yii2の高度なテンプレートプロジェクトがあり、4つのメインモジュールがあります。 backend,frontend,apiおよびcommonapiモジュールのバックエンドのメソッドにアクセスできません

私は最近、commonに2 3の機能を持つコンポーネントを作成しました。主なメソッドは、同じクラスの別のメソッドfindModel($id)を使用するsendMessageです。私はbackendからこのコンポーネントにアクセスするとき

iがライン

Yii::$app->myComponent->sendMessage() 

を以下でそのコンポーネントにアクセスすることができるが、私はapiモジュールで同じコードを使用して傾けます。

具体的な理由があるか、または共通コンポーネントのapiモジュールのすべてのコンポーネントメソッドにアクセスする別の方法はありますか。

apiフォルダに安らかなAPIを作成しました。

+1

あなたはあなたのコンポーネントを 'common/config/main.php'または' backend/config/main.php'に定義しましたか?あなたのapi-configはcommon-configとマージしますか? –

+0

@Jørgen私は 'common/config/main.php'で定義しましたが、' api-config'を 'common-config'とマージする方法はわかりません。私は 'common/config/aliases.php'に' api'を追加しました。マージする方法の例を教えてもらえますか?ありがとうございます –

答えて

0

設定ファイルをコンポーネント設定とapi configにマージする必要があります。 request lifecycleでは、アプリケーションが開始される前に構成が設定されていることがわかります。だからあなたの場合には、あなたのapi/web/index.phpはあなたbackend/web/index.phpようになります:

<?php 
defined('YII_DEBUG') or define('YII_DEBUG', true); 
defined('YII_ENV') or define('YII_ENV', 'dev'); 

require(__DIR__ . '/../../vendor/autoload.php'); 
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php'); 
require(__DIR__ . '/../../common/config/bootstrap.php'); 
require(__DIR__ . '/../config/bootstrap.php'); 

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/main.php'), 
    require(__DIR__ . '/../../common/config/main-local.php'), 
    require(__DIR__ . '/../config/main.php'), 
    require(__DIR__ . '/../config/main-local.php') 
); 

$application = new yii\web\Application($config); 
$application->run(); 

が、これはあなたがdevまたはprodにいる天候に応じて、環境に異なっていることに注意してください。

+0

はい、私はすべてのフォルダ 'backend/web'、' frontend/web'、 'api/web'に同じファイルを持っています –

関連する問題