正在yii2的config/web.php中合并另一个web.php文件



我们是两个小组,正在开发Yii2 basic中的一个项目。我们现在面临的问题是config下有不同的web.php。我们的小组希望将我们的web.php(已重命名为extras.php)包含在另一个小组的web.php中。不同之处在于,我们在web.php$configcomponents下添加了变量。是的,我们可以在其他团队的$configcomponents下手动添加新变量,但我们更喜欢使用单独的文件,这就是为什么我们将其他web.php重命名为extras.php

web.php的一个小预览看起来像这个

$params = require(__DIR__ . '/params.php');
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language'=>  isset($_SESSION['language_local']) ? $_SESSION['language_local']:'en',
    'components' => [
        'nagios' => [
                    'class' =>  'appcomponentsnagios',
        ],
        'hostlistsql' => [
                   'class' =>  'appcomponentshostlistsql',
        ],
        'request' => [empty) - this is required by cookie validation
            'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b',
        ],
        'cache' => [
            'class' => 'yiicachingFileCache',
        ],
    ],
    'params' => $params,
];

extras.php看起来像这个

$params = require(__DIR__ . '/params.php');
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language'=>  isset($_SESSION['language_local']) ? $_SESSION['language_local']:'en',
    'components' => [
        'user_functions' => [
                    'class' =>  'appcomponentsUserFunctions',
        ],
        'user_extras' => [
                   'class' =>  'appcomponentsUserExtras',
        ],
        'request' => [empty) - this is required by cookie validation
            'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b',
        ],
        'cache' => [
            'class' => 'yiicachingFileCache',
        ],
    ],
    'params' => $params,
];

我们应该采取什么方法将extras.php包含在web.php中?

编辑:

解决方案:web/index.php内部有

$config = require(__DIR__ . '/../config/web.php');

我把它改成了

$config = yiihelpersArrayHelper::merge(
    require(__DIR__ . '/../config/web.php'),
    require(__DIR__ . '/../config/extras.php')
);

为什么要在web.php中包含extras.php,而不只是合并它们?

以下是yii2advanced中如何处理相同的事情https://github.com/yiisoft/yii2-app-advanced/blob/master/environments/dev/frontend/web/index.php

如你所见。。main.php与common..合并。。main-local.php与前端合并。。main.php与前端合并。。main-local.php

有4个文件被合并到最后1个单独的配置文件。像馅饼一样松软。

如果你真的想在web.php中合并东西,做一个

$config = [....];
return yiihelpersArrayHelper::merge(
    $config,
    require(__DIR__ . 'extras.php'),
);

你们有版本控制系统吗?您可以只让web.php文件中的共同点,其余的来自外部文件。

由于每个组都有一个不同的文件,我建议创建一个常量来决定使用哪个文件。以您为例:

web.php:

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language'=>  isset($_SESSION['language_local']) ? $_SESSION['language_local']:'en',
    'components' => EXTRAS ? require(__DIR__ . '/components2.php') : require(__DIR__ . '/components1.php'),
    'params' => require(__DIR__ . '/params.php')
];

组件示例2.php:

return [
    'user_functions' => [
                'class' =>  'appcomponentsUserFunctions',
    ],
    'user_extras' => [
               'class' =>  'appcomponentsUserExtras',
    ],
    'request' => [empty) - this is required by cookie validation
        'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b',
    ],
    'cache' => [
        'class' => 'yiicachingFileCache',
    ]
]

CCD_ 17是其他地方定义的常数。您可以在web/index.php中执行此操作(遵循YII_DEBUGYII_ENV示例),并将其添加到您忽略的文件中(如果您还没有这样做的话)。

相关内容

  • 没有找到相关文章

最新更新