2011-04-19 30 views
0


我有前綴db表,並需要他們中可讀app_controller beforeFilter $prefix_array = array('admin', 'marketing');
if ($this->Auth->user() AND in_array(@$this->params['prefix'], $prefix_array)) { $this->layout = 'admin'; } else { $this->layout = 'default';}
如何編寫路由前綴動態地從DB

-where應該怎麼做,在引導或app_controller?
- 如何我可以動態地從數據庫讀取的前綴,設置爲$ prefix_array
-write他們配置::寫(「Routing.prefixes」)

+0

我已經在下面回答了,但我不確定您需要自動將前綴映射到路由的邏輯,因爲需要更改代碼。您需要添加/刪除控制器操作。你能詳細說明你想要做什麼嗎? – Tyler 2011-04-19 19:46:21

回答

0

在您的應用程序控制器,只需加載前綴:

var $uses = array('Prefix'); 

function beforeFilter() { 
    $prefixes = $this->Prefix->find('list'); 
    if($this->Auth->user() && in_array($this->params['prefix'], $prefixes) { 
     $this->layout = 'admin'; 
    } 
} 
+0

但如何配置::寫('Routing.prefixes')。我應該在bootstrap或app_controller中將值寫入Configure :: write('Routing.prefixes')? – baur79 2011-04-20 03:03:56

+0

我對你的問題發表了評論,詢問你爲什麼要這樣做。當他們鏈接到動作(代碼)時,我沒有看到動態設置前綴的好處。你能詳細說明你想要完成什麼嗎? – Tyler 2011-04-20 04:24:53

+0

,因爲我在產品控制器前有行動。 (admin_edit,marketing_edit,warehouse_edit),所有的都應該在Configure :: write('Routing.prefixes')中定義。我可以手動做,但如何動態地做到這一點。 – baur79 2011-04-20 04:34:21