我在模型中创建了一个自定义的afterFind函数,但我只是希望它在管理模式下执行它。
public function afterFind($results) {
if(Configure::read('Routing.admin')){
return $results;
}else{
return $this->locale(&$results);
}
}
但它似乎不起作用。我想这可能是不可能的。有什么想法吗?
答案 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测试。