无法访问api模块中后端的方法

时间:2016-06-23 09:32:35

标签: yii2 yii2-advanced-app yii2-basic-app

我有一个yii2高级模板项目,有4个主要模块。backendfrontendapicommon

我最近在common中创建了一个组件,其中包含2 3个函数。主要方法是sendMessage,它使用同一个类中的另一个方法findModel($id)

当我从backend访问此组件时,我可以使用以下行访问该组件

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

但我无法在api模块中使用相同的代码。

是否存在特定原因,或者是否有另一种方法可以从公共组件访问api模块中的所有组件方法。

我在api文件夹中创建了一个restful api。

1 个答案:

答案 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();

请注意,这取决于devprod中的天气情况,因此环境会有所不同。