为什么Yii2模块单独配置在基本应用程序中不起作用



我有一个yii2基本应用程序,由两部分组成(web和移动服务(。

我创建了一个模块来处理从移动设备发出的restful请求。我想把这个模块配置为rest。所以我在模块目录旁边为这个模块创建了一个配置文件。如模块的yii2文档中所述

/config/config.php:

return [
'components' => [
  'urlManager' => [
        'class' => 'yiiwebUrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'enableStrictParsing' => false,
        'rules' => array(
            [
                'class' => 'yiirestUrlRule',
                'controller' => 'mobile/mobile-clients',
                'extraPatterns' => ['GET search' => 'search']
            ],
        ),
    ],
    'request' => [
        'class' => 'yiiwebRequest',
        'enableCookieValidation' => false,
        'parsers' => [
            'application/json' => 'yiiwebJsonParser',
        ],
    ],
]
];

模块类如下:

<?php
namespace appmodulesMobile;
use Yii;
use yiibaseModule;
class MobileService extends Module {
     public $controllerNamespace = 'appmodulesMobilecontrollers';
     public function init() {
         parent::init();     
         Yii::configure($this, require(__DIR__ .DIRECTORY_SEPARATOR     
                   .'config'.DIRECTORY_SEPARATOR .'config.php'));
     }
}         

问题是请求组件没有按预期工作,而在应用程序配置(config/main.php(中配置时它工作正常

urlManager也是如此。

有什么想法吗?

我的问题的解决方案是创建api应用程序,它是yii2基本应用程序中的一个新应用程序。它共享模型和供应商目录,但有自己的配置和输入脚本(index.php(。这是更多信息的解决方案链接。

编辑

不要忘记在api.config文件中添加用户组件

  'user' => [
  'identityClass' => 'appmodelsUser',
  'enableAutoLogin' => false,
  ], 

我认为使用yii2高级应用程序结构更适合像我这样的案例。但这个解决方案非常完美:(。

最好。

相关内容

最新更新