サイトのグローバル設定を持つテーブルが DB にあります。FuelPHP の起動時にこれらのパラメーターをロードし、すべてのコントローラーで使用したいと考えています。テーブル列は id|setting_name|setting_value です。私は codeigniter を使用し、ヘルパーとしてコーディングされました。関数 site_settings('parameter') を呼び出したところ、結果が得られました。燃料でこれを行う方法は?
3 に答える
最善かつ最も透過的なソリューションは、Config クラスを拡張して、サポートされるバックエンドとして DB を追加することです。
http://fuelphp.com/forums/discussion/3104/dbconfig-store-your-app-specific-config-setting-in-a-db-rather-than-loads-of-config-files、古いかもしれませんが、それを行う方法についていくつかの指針を示します。
多くの依存関係が必要になるため、これには ORM を使用しないでください。代わりに通常の DB 呼び出しを使用してください。
Fuel で動作させるには、クラスを作成する必要があります。
データベースへのフックが組み込まれているため、モデルを作成することは理にかなっています。Model_Crud または ORM を調べてください。
http://fuelphp.com/docs/classes/model_crud/introduction.html http://fuelphp.com/docs/packages/orm/intro.html
これらは両方とも、データベースにアクセスし、必要に応じて設定を更新および作成できます。
次に、それを構成ファイルに追加して、自動ロードします。
http://fuelphp.com/docs/general/configuration.html
コア Config クラスを拡張することもできます: http://fuelphp.com/docs/classes/config.html http://fuelphp.com/docs/general/extending_core.html
これにより、基本的なゲッターとセッターを含む cor config メソッドにアクセスできます。
GlobalController などの新しいコントローラーを作成し、他のコントローラーをグローバルコントローラーに拡張できます。
次に GLobalController でbefore()
関数を作成します。つまり、この関数は他の関数よりも先に実行されます。
public function before() {
parent::before();
$this->globalstring = "MyGlobalString";
}
これで、拡張されたすべてのコントローラーは、その関数に入れられた文字列またはその他のものをGlobalController
検出できます。$this->globalstring