目前我使用的是这样的东西:
//at bootstrap.php file
Configure::write('from', 'mymail@mydomain.com')
//at controllers or models files
$var = Configure::read('from')
问题是,我想通过数据库管理该变量,以便能够以更简单的方式对其进行修改。
我正在考虑使用AppModel
进行此操作,但只有模型而非控制器才能访问它。
在这种情况下我该怎么做?
感谢。
答案 0 :(得分: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();
这很好用。当然,您也可以在AppController
和AppModel
中加载设置,以遵循DRY规则。
答案 1 :(得分:1)
你可以编写这个方法:
public function getSettings() {
return $this->{$this->modelClass}->getSettings();
}
这样,getSettings()方法可用于任何模型和任何控制器
任何模型通话:
$mysettings = $this->getSettings();
任何控制器电话:
$mysettings = $this->MODELNAME->getSettings();