0

質問があります。設定(ID、名前)を持つdbテーブルがあります。データベースからそれらを読み取った場合

$settings = $this->Setting->find('list');

各コントローラーとモデルからアクセスするには、AppController またはそのようなものでこれを行うにはどうすればよいですか?

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

ありがとう

4

1 に答える 1

0

説明:

以下のようなものを探していると思います(明らかに、独自のアプリケーションごとに微調整したいと思うでしょうが、それはアイデアです)。

アプリコントローラーでは、

  • テーブルから設定を見つける
  • それぞれを繰り返し、それぞれを「構成」変数に入れます

コード:

/**
 * Read settings from DB and populate them in constants
 */
function fetchSettings(){
    $this->loadModel('Setting');
    $settings = $this->Setting->findAll();

    foreach($settings as $settingsData) {
        $value = $settingsData['Setting']['default_value'];

        //note: can't check for !empty because some values are 0 (zero)
        if(isset($settingsData['Setting']['value']) 
            && $settingsData['Setting']['value'] !== null
            && $settingsData['Setting']['value'] !== '') {
            $value = $settingsData['Setting']['value'];
        }
        Configure::write($settingsData['Setting']['key'], $value);
   }
}

次に、アプリのどこからでもアクセスできますConfigure::read('myVar');

Configure 変数に関するCakePHP の本からの警告。(この場合は問題なく使用できると思いますが、覚えておくべきことがあります):

CakePHP の Configure クラスを使用して、アプリケーションまたはランタイム固有の値を保存および取得できます。注意してください。このクラスでは何でも格納でき、コードの他の部分で使用できます。CakePHP が設計された MVC パターンを壊したくなる誘惑にかられます。Configure クラスの主な目的は、多くのオブジェクト間で共有できる変数を集中管理することです。「構成よりも慣例」に従うことを忘れないでください。そうすれば、私たちが設定した MVC 構造を壊してしまうことはありません。

于 2013-05-02T13:23:49.683 に答える