0
我有一個問題。我有一個數據庫表設置(ID,名稱)。 如果我從數據庫中讀取它們cakePHP從每個模型和控制器獲取變量
$settings = $this->Setting->find('list');
我怎麼能做到這一點在AppController的或類似的東西從每個控制器和模型的訪問?
希望有人能幫助我。
感謝
我有一個問題。我有一個數據庫表設置(ID,名稱)。 如果我從數據庫中讀取它們cakePHP從每個模型和控制器獲取變量
$settings = $this->Setting->find('list');
我怎麼能做到這一點在AppController的或類似的東西從每個控制器和模型的訪問?
希望有人能幫助我。
感謝
說明:
我會假設你正在尋找的東西像下面(當然你要調整它每自己的應用程序,但 - 它的想法)。
在該應用控制器,它
代碼:
/**
* Read settings from DB and populate them in constants
*/
function fetchSettings(){
$this->loadModel('Setting');
$settings = $this->Setting->findAll();
foreach($settings as $settingsData) {
$value = $settingsData['Setting']['default_value'];
//note: can't check for !empty because some values are 0 (zero)
if(isset($settingsData['Setting']['value'])
&& $settingsData['Setting']['value'] !== null
&& $settingsData['Setting']['value'] !== '') {
$value = $settingsData['Setting']['value'];
}
Configure::write($settingsData['Setting']['key'], $value);
}
}
然後,您可以訪問它們Configure::read('myVar');
來自CakePHP書籍的關於配置變量的警告。 (我想他們沒事在這種情況下使用,但 - 這是要牢記):
CakePHP的配置類可用於存儲和檢索應用程序 或運行特定的值。請注意,此類允許您存儲任何內容,然後將其用於您的 代碼的任何其他部分:肯定會破壞MVC模式的誘惑CakePHP設計爲 。配置類的主要目標是保持可在多個對象之間共享的集中變量 。請記住嘗試通過 「約定優於配置」來生活,並且不會最終破壞我們已經設置的MVC 結構。