【问题标题】:Why Yii2 module separate configuration does not work in basic app?为什么 Yii2 模块单独配置在基本应用程序中不起作用?
【发布时间】:2015-07-05 16:52:18
【问题描述】:

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

我创建了一个模块来处理从 mobile 发出的宁静请求。我想将此模块配置为休息。所以我在模块目录中为这个模块创建了一个配置文件。如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 也一样。

有什么想法吗?

【问题讨论】:

  • 为什么要复制这些组件?只需复制实例,因此每个实例只有一个。复制到处使用的组件绝不是一个好主意
  • @robsch 我想自定义移动模块的组件以使其变得安静,这就是我想要的,这是正确的方式
  • .../modules/Mobile/config/config.php此文件不存在?
  • @Ngô Văn Thao 文件存在

标签: configuration yii2 yii2-basic-app


【解决方案1】:

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

编辑

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

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

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

最好的。

【讨论】:

  • OMG... 对于编写该教程的人来说,解释 URL 路径以连接到项目 (api) 中的新应用程序是否如此困难?你可以帮帮我吗?。在那个“教程”中,您如何访问新创建的 api?可以提供示例 URL 吗?
  • 我有 yii2_project/api/modules/v1/controllers/TestController.php。网址应该类似于:myweb.com/api/v1/test(但不是)
  • 我忘记了 Yii2 在端点 URL 中将控制器复数化了。因此正确的路径是:mysite/api/v1/tests。我的错。
猜你喜欢
  • 1970-01-01
  • 2019-08-28
  • 2018-03-11
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多