2013-07-16 37 views
0

我愛和恨Cakephp在同一時間。 我需要在多租戶站點中幾乎每個控制器中的當前域名和ID。CakePHP beforeFilter找到

所以,在AppContoller beforeFilter ......如果我這樣做...

$dname = $_SERVER['HTTP_HOST']; 
$this->set('domain',$dname); //only to show test output in the view. 

我有機會獲得$域視圖沒有任何問題。 目前爲止還不錯。我知道我有權訪問SERVER變量。 然後,當我硬編碼的域名是這樣的...

$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

檢查$ dname的值 – DevZer0

+0

這在第一個片段中可用。如果我設置,我可以在視圖中訪問$ dname。 –

+0

當你寫最後的代碼?在模型或控制器中? –

回答

0

你可以pr($ dname);在過濾器之前,它會顯示在每個頁面上。也可以嘗試使用strtolower()來確保在將其放入條件時不會有其他字母大寫。

+0

ok pr($ dname)顯示每個頁面上的值,就像我們期望的那樣。我將它設置爲strtolower()並再次嘗試查詢。仍然顯示一個空數組。 –

1

哦,我的天哪。我很尷尬。它工作正常。我沒有在我使用的域的數據庫中的條目,所以它找不到任何東西。抱歉。 有時候,整個森林/樹木的事情....你知道。

+1

你最好把'Configure :: write('x.domain',$ _SERVER ['HTTP_HOST']);'放在例如' 'app/Config/bootstrap.php'並引用'Configure :: write('。x.domain')'而不是服務器全局。否則就不可能修改(如果需要出現),測試會變得更加困難,並且使得通過cli使用相同的代碼變得更加困難。 – AD7six