1

我有兴趣Yii::app()->params使用CActiveRecord名为SiteSetting.

不幸的是,我在网上找不到太多建议,但相信我可以在SiteSetting调用中放置一个方法loadSiteSettingsToAppParams并添加设置......

'onBeginRequest'=>array('SiteSetting', 'loadSiteSettingsToAppParams')

...到配置。

我想知道我是否只能将它添加onBeginRequest到类中的Yii::app()某个地方SiteSetting(以保持我的代码模块化)以及这是否是一种明智的方法。

提前致谢。

4

2 回答 2

2

现在重新阅读您的问题,我会尝试提供答案。

对于“我想知道我是否只能将其添加onBeginRequest到类中的Yii::app()某处SiteSetting(以保持我的代码模块化)”的问题:答案是,您不仅限于一个类。您可以(理论上)将其放置在应用程序中的任何位置以及config.php文件中。

至于这是否是一种明智的方法,这取决于从数据库请求这些设置所需的时间以及您是否准备将该时间添加到您的 HttpRequest 响应时间中。onBeforeRequest在每个 HttpRequest 之前触发,如果该方法loadSiteSettingsToAppParams消耗大量时间,则将该时间添加到 HttpRequest 响应时间中。

我建议您在登录后获取这些设置一次,然后仅在它们更改时更新它们(设置已更新)。这样,您可以loadSiteSettingsToAppParamsUserIdentity类中调用 to 并在成功登录后调用它。

这就是我将如何去做这件事。

希望我有所帮助。

于 2013-09-30T15:28:10.370 回答
1

通过使用类似SettingComoponent的组件并将其放置在组件目录中protected/components然后在预加载部分中预加载此组件,这是一种简单而好的方法,如下所示preload => array('log', 'setting', ...)。就是这样,现在你可以在任何你想要的地方调用这个组件Yii:app()->setting->whatever

我希望这个答案对你有用。

于 2015-08-25T06:06:00.343 回答