目前我使用这样的事情:
//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();