目前我正在使用这样的东西:
//at bootstrap.php file
Configure::write('from', 'mymail@mydomain.com')
//at controllers or models files
$var = Configure::read('from')
问题是,我想通过数据库管理该变量,以便能够以更简单的方式对其进行修改。
我正在考虑这样做,AppModel
但它只能用于模型而不是控制器。
在这种情况下我该怎么办?
谢谢。
目前我正在使用这样的东西:
//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
遵循DRY规则。
在 AppController 你可以写这个方法:
public function getSettings() {
return $this->{$this->modelClass}->getSettings();
}
这样,getSettings() 方法可用于任何模型和任何控制器
任何模型调用:
$mysettings = $this->getSettings();
任何控制器调用:
$mysettings = $this->MODELNAME->getSettings();