1

我想做的是在 development_db 和 local_db 之间切换。在索引页面中,有一个数据库列表,如果我单击列表上的数据库名称,我可以从中选择,整个应用程序将更改为我选择的特定数据库。我所做的是,我在我的控制器中设置了一个会话变量,当 database.php 加载时将读取该变量,但我的问题是我不能使用

$this->Session->read(); 

在 database.php 文件上。有没有一种方法可以让 database.php 文件读取我的会话变量?

4

1 回答 1

0

您可以在控制器中使用 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>

这主要来自记忆,所以如果有轻微的问题,请原谅。我认为这不是一种安全的方法,所以如果您正在处理敏感信息,我会更多地研究该做什么和不该做什么......等等,但是 - 它适用于我们的非敏感目的。

于 2013-05-21T14:39:34.037 回答