合并yii2

时间:2016-03-29 15:03:05

标签: web include yii2 yii2-basic-app

我们是开发Yii2基础项目的两个小组。我们现在面临的问题是web.php下的config不同。我们的群组希望将web.php(已重命名为extras.php)包含在另一个群组的web.php内。不同之处在于我们在components的{​​{1}}的{​​{1}}下添加了变量。是的,我们可以在$config web.php来自其他团队的components手动添加我们的新变量,但我们更喜欢使用单独的文件,因此我们将其他$config重命名为web.php

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

extras.php

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' => [
        'nagios' => [
                    'class' =>  'app\components\nagios',
        ],
        'hostlistsql' => [
                   'class' =>  'app\components\hostlistsql',
        ],
        'request' => [empty) - this is required by cookie validation
            'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
    ],
    'params' => $params,
];

我们应该采取什么方法将$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' => 'app\components\UserFunctions', ], 'user_extras' => [ 'class' => 'app\components\UserExtras', ], 'request' => [empty) - this is required by cookie validation 'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b', ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], ], 'params' => $params, ]; 纳入extras.php

编辑:

解: web.php内有

web/index.php

我将其改为

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

2 个答案:

答案 0 :(得分:1)

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

以下是yii2高级https://github.com/yiisoft/yii2-app-advanced/blob/master/environments/dev/frontend/web/index.php

中处理同一事情的方法

正如你所看到的那样common..main.php与common..main-local.php合并与frontend..main.php合并与frontend..main-local.php合并

共有4个文件合并到1个单个配置文件。 Eazy as pie。

如果你真的想在web.php中合并内容,那么就做一个

$config = [....];
return yii\helpers\ArrayHelper::merge(
    $config,
    require(__DIR__ . 'extras.php'),
);

答案 1 :(得分:0)

你们有没有任何版本控制系统(如git,Bitbucket等......)? 您可以只在web.php文件中使用您拥有的内容,其余内容来自外部文件。

由于每个组都有不同的文件,我建议创建一个constant来决定使用哪个文件。按照你的例子:

<强> 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')
];

components2.php示例:

return [
    'user_functions' => [
                'class' =>  'app\components\UserFunctions',
    ],
    'user_extras' => [
               'class' =>  'app\components\UserExtras',
    ],
    'request' => [empty) - this is required by cookie validation
        'cookieValidationKey' => 'nYwdMpu-dw004qwFRZmqZOzzC3xdnL8b',
    ],
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ]
]

EXTRAS是其他地方定义的常量。您可以在web/index.php中执行此操作(按照YII_DEBUGYII_ENV示例)并将其添加到您忽略的文件中(如果您尚未添加)。