php - 与 YII_DEBUG 和 YII_ENV 类似,我在 Yii2 中将全局变量放在哪里

标签 php yii2 yii2-advanced-app

我正在构建一个网站,该网站有一个名为 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/

相关文章:

css - Bootstrap NavBar 上的图像,滚动时淡出

yii2 - Yii2将函数应用于所有请求

php - 具有多个变量和表的 MySQL 触发器

php - 使用 MySQL 和 PHP 将数据插入数据库时​​出现 SQL 错误

php - 根据从下拉列表中选择的选项选择适当的复选框

php - CodeIgniter 无法回显日期时间结果

error-handling - Yii2,模块错误页面不显示,但在错误 404 时显示空白页面

php - yii2 - 模型加载函数没有设置一些模型属性

javascript - 如何获取选中的gridview列的值

php - Yii2 中文件属性的自定义错误消息