Php Codeigniter-在环境之间切换
默认情况下,每个codeigniter应用程序都在ci.php中定义了环境:Php Codeigniter-在环境之间切换,php,codeigniter,Php,Codeigniter,默认情况下,每个codeigniter应用程序都在ci.php中定义了环境: define('ENVIRONMENT', 'development'); 我需要在我的应用程序中在不同的国家之间切换,每个国家都有自己的配置和数据库。所以我尝试在'config'文件夹中为每个国家创建文件夹,并将所有需要的配置放在那里。然后我想从下拉列表中选择国家并切换环境。像这样尝试: define('ENVIRONMENT', 'mexico'); 但这会引起错误: 消息:已定义常量环境 我怎样才能做到这一点
define('ENVIRONMENT', 'development');
我需要在我的应用程序中在不同的国家之间切换,每个国家都有自己的配置和数据库。所以我尝试在'config'文件夹中为每个国家创建文件夹,并将所有需要的配置放在那里。然后我想从下拉列表中选择国家并切换环境。像这样尝试:
define('ENVIRONMENT', 'mexico');
但这会引起错误:
消息:已定义常量环境
我怎样才能做到这一点呢?您可以尝试在
index.php中实现这一点
开关($\u POST['env'])){
“墨西哥”案:
定义(‘环境’、‘墨西哥’);
打破
//等等。。。
}
您可以使用get方法和use在URL中传递选定的国家id或任何短代码
index.php中的以下代码:
您的URL应该如下所示:
www.example.com?country=在
或
www.example.com/controller\u name/function\u name/IN
if ($_GET['country']=='IN')
define('ENVIRONMENT', 'india');
elseif ($_GET['country']=='us')
define('ENVIRONMENT', 'us');
else
define('ENVIRONMENT', 'uk');
:常量是简单值的标识符(名称)。顾名思义,值在
脚本的执行
因此,没有范围重新定义已定义的环境常量的值。您可以使用另一个常量名称[除ENVIRONMENT或codeignitor已使用的其他名称外]或更可取的变量来维护与国家/地区相关的版本。在您的根文件夹中有一个文件调用index.php
(下图)
在这里,如果您定义“开发”
,它将显示您在Codeigniter框架上的错误
例如,如果发生数据库错误,它将显示此类错误
这样你就可以检查出什么地方出了问题
您可以通过定义测试或生产来测试它。这样您将只获得空白页,而不是错误详细信息
我认为,define这样的变量调用mexico
阅读本文
解决方案1:
由于环境已经在codeigniter中默认定义,所以这个特定需求可以通过
if (!defined('ENVIRONMENT')) {
define('ENVIRONMENT', 'mexico');
}
if (!defined('ENVIRONMENT')) {
define('ENVIRONMENT', 'mexico');
}
由于环境已经在codeigniter中默认定义,所以这个特定需求可以通过
if (!defined('ENVIRONMENT')) {
define('ENVIRONMENT', 'mexico');
}
if (!defined('ENVIRONMENT')) {
define('ENVIRONMENT', 'mexico');
}
在index.php中发布config.phpDefine环境。不建议更改/取消设置常量。但这里有一个关于如何做到这一点的答案:不使用环境进行本地化的可能重复。这将通过url确定配置。我与许多国家只有一个url。因此,当选择一个国家/地区时,切换到该国家/地区配置。也许这个方法不正确,也许我不应该对环境这样做。好吧,你可以用$\u POST
变量来做这个解决方案,但在我看来,动态更改环境常量并拥有一个else if else if else if else if森林不是一个好的做法。。。这不是一个好的练习,这正是我在控制器中所做的。已经定义的var发生错误。谢谢,伙计,方法不正确。通过动态地使用$this->load->database()来解决这个问题。@stackUnderflow您需要什么。你能帮我清理一下吗?这将很容易帮助你。我想动态切换国家数据库。在会话中存储国家,在所有控制器构造函数中检查国家,并加载适当的数据库。