1

目前我正在使用这样的东西:

//at bootstrap.php file
Configure::write('from', 'mymail@mydomain.com')

//at controllers or models files
$var = Configure::read('from')

问题是,我想通过数据库管理该变量,以便能够以更简单的方式对其进行修改。

我正在考虑这样做,AppModel但它只能用于模型而不是控制器。

在这种情况下我该怎么办?

谢谢。

4

2 回答 2

4

您可以创建一个单独的模型/插件,该模型/插件将映射到数据库中的配置表。然后通过控制器和模型的$uses语句加载它。App::import()

class SystemSetting extends AppModel {

/**
 * Return a list of all settings
 *
 * @access public
 * @return array
 */
    public function getSettings() {        
        return $this->find('all');
    }
}

然后,在您的控制器中:

class SomeController extends AppController {

    var $uses = array('SystemSetting');

    public function displaySettings() {
        $settings = $this->SystemSetting->getSettings();
        // .. your code
    }
}

在模型中:

App::import('Model', 'SystemSettings.SystemSetting');
$settings = new SystemSetting();
$mySettings = $settings->getSettings();

这工作得很好。当然,您也可以在两者中加载设置AppControllerAppModel遵循DRY规则。

于 2012-10-30T14:09:48.733 回答
1
  1. 在您的 AppModel 中创建 getSettings
  2. 在 AppController 你可以写这个方法:

    public function getSettings() {
        return $this->{$this->modelClass}->getSettings();
    }
    

这样,getSettings() 方法可用于任何模型和任何控制器

任何模型调用:

$mysettings = $this->getSettings();

任何控制器调用:

$mysettings = $this->MODELNAME->getSettings();
于 2012-10-30T16:08:41.370 回答