我同时喜欢和讨厌Cakephp。 我需要多租户站点中几乎每个控制器中的当前域名和ID。
所以,在AppContoller beforeFilter中...如果我这样做......
$dname = $_SERVER['HTTP_HOST'];
$this->set('domain',$dname); //only to show test output in the view.
我可以在视图中访问$ domain而不会有任何问题。 目前很好。我知道我可以访问SERVER变量。 然后,当我像这样对域名进行硬编码时,我的find函数工作正常......
$this->loadModel('Domain');
$domainName = $this->Domain->find('first',array('conditions' => array('Domain.name' =>'test.localhost.com')));
但是,当我尝试在这样的条件下使用$ dname时,它会失败。
$this->loadModel('Domain');
$dname = $_SERVER['HTTP_HOST'];
$domainName = $this->Domain->find('first',array('conditions' => array('Domain.name' => $dname)));
我感觉我很亲近,但是......是吗?
答案 0 :(得分:1)
哦,我的天哪。我很尴尬。它工作正常。我没有在我正在使用的域的数据库中有条目,所以它找不到任何东西。抱歉。 有时那整个森林/树木......你知道吗。
答案 1 :(得分:0)
你可以pr($ dname);在过滤器内,它将显示在每个页面上。你也可以尝试使用strtolower()来确保在将它放入条件时没有其他字母大写。