我正在调用的元素文件:
$brand = $this->requestAction('brands/buyer_getnames/');
我正在调用的动作文件:
public function buyer_getnames(){
$newid=$this->Auth->User('brand_id');
$name=$this->Brand->find('first',array('conditions'=>array('Brand.id'=>$newid),'recursive'=>-1));
return $name['Brand']['name'];
}
在下方收到错误.. !!
Private Method in BrandsController
Error: BrandsController::buyer_getnames() cannot be accessed directly.
请帮忙
答案 0 :(得分:5)
如果您使用的是prefix routing,则无法通过function prefix_foo()
形式的网址访问/controller/prefix_foo
- 它必须是相应的前缀网址:/prefix/controller/foo
。
因此,您的请求操作应该是:
$brand = $this->requestAction('/prefix/brands/getnames/');
请注意,如果该方法所做的唯一事情是调用模型方法,那么最好只做:
$model = ClassRegistry::init('Brand');
$brand = $model->someMethod();
答案 1 :(得分:2)
如果使用requestAction方法请求您的操作,则可以允许未经授权的访问操作。
例如:
public function beforeFilter() {
parent::beforeFilter();
if ($this->request->is('requested') && $this->request->params['action'] == 'index') {
$this->Auth->allow(array('index'));
}
}
这也可能有效(尚未测试):
public function index() {
if ($this->request->is('requested')) {
$this->Auth->allow(array('index'));
}
}
请告诉我是否可以为您提供更多帮助。