我正在构建一个网站,该网站有一个名为 marketplace 的“子域”。所以 url 将是 marketplace.sample.com。我正在使用 Yii2 高级应用程序,并将以下代码添加到位于 frontend/web 的 index.php 中。
defined('MARKETPLACE') or define('MARKETPLACE', preg_match('/^marketplace/', $_SERVER['HTTP_HOST']) === 1 ? true : false);
这适用于我的环境,但是,我刚刚意识到 index.php 文件位于 Yii2 的 .gitignore 文件中,因为该文件是由 init 脚本创建的,因此对其所做的更改将被运行 init 覆盖。
无论如何,问题是:我应该把这段代码放在哪里,以便它可以提交并与开发团队的其他成员共享,并在推送代码时将其投入生产?
我试图将此代码放在 common/config/params.php 中,但是当我尝试访问变量以确定要使用的路由时,我不能,因为在前端/config 时 Yii 应用程序尚未初始化/main.php 文件运行时出现错误,提示我正在尝试访问非对象的属性。
/frontend/config/main.php
'defaultRoute' => MARKETPLACE ? 'marketplace' : 'site',
/frontend/config/main.php(用参数代替)
'defaultRoute' => Yii::$app->params['marketplace'] ? 'marketplace' : 'site'
第二个错误提示我正在尝试访问非对象的属性。
最佳答案
在目录中:
common/config
您可以使用 bootstrap.php 文件插入您需要的代码。 该文件在启动阶段执行,不会在 .gitignore 中指明。
通过这种方式,您可以分配常量 MARKETPLACE,确保在使用 GIT 时传播代码
关于php - 与 YII_DEBUG 和 YII_ENV 类似,我在 Yii2 中将全局变量放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678700/