2013-05-02 104 views
0

我有一个问题。我有一个数据库表设置(ID,名称)。 如果我从数据库中读取它们cakePHP从每个模型和控制器获取变量

$settings = $this->Setting->find('list'); 

我怎么能做到这一点在AppController的或类似的东西从每个控制器和模型的访问?

希望有人能帮助我。

感谢

回答

0

说明:

我会假设你正在寻找的东西像下面(当然你要调整它每自己的应用程序,但 - 它的想法)。

在该应用控制器,它

  • 通过每个
  • 重复发现从表中的设置,并把每一个为 “配置” 可变

代码:

/** 
* 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 结构。