我想做的是在 development_db 和 local_db 之间切换。在索引页面中,有一个数据库列表,如果我单击列表上的数据库名称,我可以从中选择,整个应用程序将更改为我选择的特定数据库。我所做的是,我在我的控制器中设置了一个会话变量,当 database.php 加载时将读取该变量,但我的问题是我不能使用
$this->Session->read();
在 database.php 文件上。有没有一种方法可以让 database.php 文件读取我的会话变量?
您可以在控制器中使用 Cake 的Configure::write()
/ Configure::read()
,然后在database.php
文件中访问它 - 如下所示:
//controller
Configure::write('DEV', true);
//database
function __construct() {
$dev = Configure::read('DEV');
if($dev) $this->default = $this->dev;
}
function DATABASE_CONFIG() {
$this->__construct();
}
另外的选择:
另一种方式(我们目前的做法)是检查$_SERVER['DEV']
. 只需将其设置在您的httpd-vhosts.conf
文件中(如果使用 wamp):
<VirtualHost mysite>
DocumentRoot C:\wamp\www\mysite
ServerName mysite
SetEnv DEV 1
</VirtualHost>
这主要来自记忆,所以如果有轻微的问题,请原谅。我认为这不是一种安全的方法,所以如果您正在处理敏感信息,我会更多地研究该做什么和不该做什么......等等,但是 - 它适用于我们的非敏感目的。