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

时间:2015-07-05 16:52:18

标签: configuration yii2 yii2-basic-app

我有一个yii2基本应用程序,包含2个部分(Web和移动服务)。

我创建了一个模块来处理从移动设备发出的其他请求。我想配置这个模块休息。所以我在模块目录的旁边为这个模块创建了一个配置文件。如yii2 documentation for modules

中所述

/config/config.php:

return [

'components' => [
  'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'enableStrictParsing' => false,
        'rules' => array(

            [
                'class' => 'yii\rest\UrlRule',
                'controller' => 'mobile/mobile-clients',
                'extraPatterns' => ['GET search' => 'search']
            ],

        ),
    ],
    'request' => [
        'class' => '\yii\web\Request',
        'enableCookieValidation' => false,
        'parsers' => [
            'application/json' => 'yii\web\JsonParser',
        ],
    ],
]

];

模块类如下:

<?php

namespace app\modules\Mobile;

use Yii;
use yii\base\Module;

class MobileService extends Module {

     public $controllerNamespace = 'app\modules\Mobile\controllers';

     public function init() {
         parent::init();     
         Yii::configure($this, require(__DIR__ .DIRECTORY_SEPARATOR     
                   .'config'.DIRECTORY_SEPARATOR .'config.php'));

     }
}         

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

与urlManager相同。

任何想法?

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案是创建api应用程序,它是yii2基本应用程序中的新应用程序。它共享模型和供应商目录,但有自己的配置和条目脚本(index.php)。这是solution link以获取更多信息。

修改

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

  'user' => [
  'identityClass' => 'app\models\User',
  'enableAutoLogin' => false,
  ], 

我认为使用yii2高级应用程序结构对于像我这样的情况更好。但是这个解决方案很完美:)。

最佳。