我有一个yii2高级模板项目,有4个主要模块。backend
,frontend
,api
和common
。
我最近在common
中创建了一个组件,其中包含2 3个函数。主要方法是sendMessage
,它使用同一个类中的另一个方法findModel($id)
。
当我从backend
访问此组件时,我可以使用以下行访问该组件
Yii::$app->myComponent->sendMessage()
但我无法在api
模块中使用相同的代码。
是否存在特定原因,或者是否有另一种方法可以从公共组件访问api
模块中的所有组件方法。
我在api
文件夹中创建了一个restful api。
答案 0 :(得分:0)
您必须将配置文件与组件设置合并到api配置中。在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
中的天气情况,因此环境会有所不同。