2015-06-25 66 views
0

配置設置使用CakePHP 2.6.7允許用戶更改CakePHP中

我創建了一個插件,並有2個變量,在大多數情況下是有效的常數 - 但用戶應該能夠改變它們的值(它們是頁眉和頁腳圖像的路徑)。

我一直在嘗試使用Configure::read()Configure::write(),但現在意識到這不是Configure的意圖,並且實際上並不以這種方式工作。

應如何存儲這兩個變量,以便用戶可以更改這些值,並且這些更改將是永久性的(直到他們進行另一次更改)?

初步解決方案

我現在在一個數組到一個文本文件的串行數據解決了這個問題。如果有人擁有更優雅的解決方案,那將會很棒。

回答

1

最簡單的解決辦法是將這些值存儲在數據庫中的設置,然後在加載它們。

我們經常做使用Setting模型存儲的名稱 - 值對,然後附加組件(經常AppController )加載數據。例如,創建一個組件是這樣的: -

App::uses('Component', 'Controller'); 

class SettingsComponent extends Component { 

    public function initialize(Controller $Controller) {   
     $Controller->loadModel('Setting');  
     $settings = $Controller->Setting->find('all');  
     foreach($settings as $setting) {    
      Configure::write('Setting.' . $setting['Setting']['name'], $setting['Setting']['value']);   
     } 
     return; 
    } 

} 

然後加載這對於需要這些設置任何控制器: -

public $components = array('Settings'); 

然後,您可以訪問你的代碼,如值: -

Configure::read('Setting.app_name', 'My Cake App'); 

您可以輕鬆擴展組件的功能以及存儲在settings表中的內容,使此方法儘可能靈活。

+0

這很棒!我一定會在未來的項目中使用它。 – Kvothe