【问题标题】:cakePHP get a variable from each Model and ControllercakePHP 从每个模型和控制器中获取一个变量
【发布时间】:2013-05-02 13:16:11
【问题描述】:

我有一个问题。我有一个带有设置(id、name)的数据库表。 如果我从数据库中读取它们

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

如何在 AppController 或类似的东西中执行此操作以从每个控制器和模型访问?

希望有人可以帮助我。

谢谢

【问题讨论】:

    标签: cakephp cakephp-2.1


    【解决方案1】:

    说明:

    我假设您正在寻找类似下面的东西(显然您会希望根据自己的应用程序对其进行调整,但是 - 就是这样)。

    在应用控制器中,它

    • 从表中查找设置
    • 重复每一项并将每一项放入“配置”变量中

    代码:

    /**
     * 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 的 Configure 类可用于存储和检索 应用程序或运行时特定的值。小心,这个类允许 您可以在其中存储任何内容,然后在您的任何其他部分使用它 代码:打破 MVC 模式的必然诱惑 CakePHP 的设计初衷 为了。 Configure 类的主要目标是保持集中变量 可以在许多对象之间共享。记得努力生活 “约定优于配置”,你最终不会破坏 MVC 我们已经建立的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多