检测模型中的admin前缀是否为true

时间:2012-02-03 13:23:23

标签: cakephp cakephp-2.0

我在模型中创建了一个自定义的afterFind函数,但我只是希望它在管理模式下执行它。

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

但它似乎不起作用。我想这可能是不可能的。有什么想法吗?

2 个答案:

答案 0 :(得分: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);

您始终拥有的另一个选择是将信息传递给模型。

答案 1 :(得分:1)

Router::getParam('prefix', true)为您提供当前请求前缀值。

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

使用Cake 2.4测试。