【发布时间】:2021-10-26 18:10:01
【问题描述】:
我正在尝试将 REST api 添加到我现有的经典 Yii2(高级模板)项目中。根据Creating a REST API for Yii2-basic-template 和RESTful API in Yii 2 Advanced Application Template 我试图通过向我现有的应用程序添加一个新模块来实现这一点。 这是我现在的应用程序结构:
+ api
+ config
-main.php
+ modules
+ v1
+ controllers
-Module.php
-index.php
-.htaccess
+ backend
+ common
...
我的 api/config/main.php 文件:
<?php
$params = require(__DIR__ . '/../../backend/config/params.php');
return [
'id' => 'app-backend-api',
'basePath' => dirname(__DIR__) . '/..',
'bootstrap' => ['log'],
'modules' => [
'v1' => [
'class' => 'api\modules\v1\Module'
]
],
'components' => [
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['v1/goal']],
],
],
],
'params' => $params,
];
还有我的 Module.php
<?php
namespace api\modules\v1;
class Module extends \yii\base\Module
{
public $controllerNamespace = 'api\modules\v1\controllers';
public function init()
{
parent::init();
}
}
问题是当我尝试导航到 http://my-url/api/v1/goals 时出现以下错误:
Invalid Configuration – yii\base\InvalidConfigException
Failed to instantiate component or class "api\modules\v1\Module".
Caused by: ReflectionException
Class api\modules\v1\Module does not exist
in C:\wamp64\www\agency\vendor\yiisoft\yii2\di\Container.php at line 453
【问题讨论】:
-
自动加载器似乎有问题。您是否为
composer.json中的api命名空间定义了自动加载规则?如果没有,你至少应该在 Yii 配置中定义@api别名。 -
非常感谢。添加别名解决了这个问题。
-
找到你的问题的答案here