当前我正在使用类似的东西:
//at bootstrap.php file
Configure::write('from', 'mymail@mydomain.com')
//at controllers or models files
$var = Configure::read('from')
问题是,我想通过数据库管理该变量,以便以更简单的方式对其进行修改。
我正在考虑使用AppModel
进行操作,但是只能用于模型而不是控制器。
在这种情况下我该怎么办?
谢谢。
您可以创建一个单独的模型/插件,该模型/插件将映射到数据库中的配置表。然后通过控制器的$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
中加载设置以遵循干燥规则。
- 在您的AppModel中创建GetSetting
-
在AppController中您可以编写此方法:
public function getSettings() { return $this->{$this->modelClass}->getSettings(); }
这样,任何模型和任何控制器都可以使用getSettings()方法
任何型号调用:
$mysettings = $this->getSettings();
任何控制器调用:
$mysettings = $this->MODELNAME->getSettings();