1

現在、私は次のようなものを使用しています:

//at bootstrap.php file
Configure::write('from', 'mymail@mydomain.com')

//at controllers or models files
$var = Configure::read('from')

問題は、データベースを介してその変数を管理し、より簡単な方法で変更できるようにしたいということです。

私はそれを行うことを考えていましたAppModelが、それはモデルに対してのみアクセスでき、コントローラーにはアクセスできません。

この場合、どうすればよいですか?

ありがとう。

4

2 に答える 2

4

データベースの構成テーブルにマップされる個別のモデル/プラグインを作成できます。次に、コントローラーとモデルの$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();

これはうまくいきます。もちろん、DRYルールに従うために、AppControllerとの両方で設定をロードすることもできます。AppModel

于 2012-10-30T14:09:48.733 に答える
1
  1. AppModel で getSettings を作成します
  2. AppController では、次のメソッドを記述できます。

    public function getSettings() {
        return $this->{$this->modelClass}->getSettings();
    }
    

このようにして、getSettings() メソッドは、どのモデルおよびコントローラーでも使用できます。

任意のモデル呼び出し:

$mysettings = $this->getSettings();

コントローラー呼び出し:

$mysettings = $this->MODELNAME->getSettings();
于 2012-10-30T16:08:41.370 に答える