2012-02-03 41 views
0

我已經在模型中定製了afterFind函數,但我只是希望它在管理模式下執行它。檢測管理員前綴是否來自模型

public function afterFind($results) { 
    if(Configure::read('Routing.admin')){ 
     return $results; 
    }else{ 
     return $this->locale(&$results); 
    } 
} 

但它似乎並沒有工作。我想這可能是不可能的。任何想法?

回答

4

檢查覈心配置設置對我來說沒有意義。 除了'Routing.admin'已被棄用的事實 - 它的Prefix.admin。 它只存儲蛋糕使用的前綴。

如果您確實想要將信息存儲在您的AppController的beforeFilter()中的configure :: read()中,並再次從模型中讀取它。 但它需要與您的設置不衝突的東西。 所以如果你使用Prefix你很可能再次使用Routing

//beforeFilter - prior to any model find calls! 
$isAdmin = !empty($this->params['admin']); 
Configure::write('Routing.admin', $isAdmin); 

你總是有另一種選擇是傳遞到模型中的信息。

+0

是的,我實際上已經意識到閱讀'Routing.admin'不會成爲訣竅,但它實際上讓我明白。 這個解決方案效果非常好,我只是用$ this-> params ['admin']來代替,它似乎在我的應用中效果更好。 非常感謝! – capsula 2012-02-03 13:36:33

1

Router::getParam('prefix', true)給你當前的請求前綴值。

public function afterFind($results, $primary = false) { 
    return Router::getParam('prefix', true) == 'admin' ? $results : $this->locale(&$results); 
} 

用Cake 2.4測試。