在config / main.php中找不到Yii2模块(不在/ vendor文件夹下)类

时间:2016-12-12 08:06:08

标签: reflection module yii2

我在文件夹api下创建了一个模块(它本身与yii2高级应用程序中的后端和前端相同)。

文件夹结构:

  

API
   - 共同的   ------控制器
  ------型号
   - 配
   - 模块
  ------ v1
  ----------控制器
  ----------型号
   - 运行时
   - 测试
   - 网站

在api / config / main.php中:

return [
'id' => 'app-api',
'basePath' => dirname(__DIR__),    
'bootstrap' => ['log'],
'modules' => [
    'v1' => [
        'basePath' => '@app/modules/v1',
        'class' => 'api\modules\v1\Module'
    ]
],

我收到错误:

  

ReflectionException

     

类api \ modules \ v1 \ Module不存在

班级肯定在那里。

我已经运行了一个composer dumpautoload(没有错误)。

config / main.php中的urlManager:

'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        'showScriptName' => false,
        'rules' => [
              'v1/site/index' => 'v1/site/index', //module/controller/action
        ],        
    ]

任何帮助非常感谢,

感谢

2 个答案:

答案 0 :(得分:7)

好的,它得到了: 在common / config / bootstrap.php中,添加:

Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');

然后在config / main.php中使用:

'modules' => [
        'v1' => [
            'basePath' => '@api/modules/v1',
            'class' => 'api\modules\v1\Module'
        ]
    ],

这似乎有效,谢谢你们

答案 1 :(得分:1)

谢谢,gvanto。还要检查是否在\ api \ web \ index.php中包含common / config / bootstrap.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');

$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();
这是我的错误。也许它会帮助某人