1

という拡張子Yii::app()->paramsを使用して、データベースから配列にいくつかのシステム パラメータをロードすることに興味があります。CActiveRecordSiteSetting

残念ながら、これについてオンラインで多くのアドバイスを見つけることができませんでしたが、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 応答時間に追加しています。

ログイン後に一度これらの設定を取得し、変更された場合にのみ更新することをお勧めします (設定が更新されます)。このようにloadSiteSettingsToAppParamsして、UserIdentityクラスに呼び出しを配置し​​、ログインが成功した後に呼び出すことができます。

それは私がこれを行う方法です。

私が助けてくれることを願っています。

于 2013-09-30T15:28:10.370 に答える
1

SettingComoponentのようなコンポーネントを使用してコンポーネントディレクトリに配置し、protected/componentsこのコンポーネントをこのようにプリロードセクションにプリロードすることで、これを達成する簡単で良い方法ですpreload => array('log', 'setting', ...)。以上で、このコンポーネントを好きな場所で呼び出すことができますYii:app()->setting->whatever

これがあなたにとって役立つ答えであることを願っています。

于 2015-08-25T06:06:00.343 に答える