0

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

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

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

希望可以有人帮帮我。

谢谢

4

1 回答 1

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

于 2013-05-02T13:23:49.683 回答