CakePHP 2.3方法onlyAllow不存在

时间:2013-03-22 06:16:38

标签: cakephp-2.3

尝试删除记录时今晚发生奇怪的错误:

Method onlyAllow does not exist

Error: An Internal Error Has Occurred.
Stack Trace

APP/Controller/VendorsController.php line 136 → CakeRequest->__call(string, array)
APP/Controller/VendorsController.php line 136 → CakeRequest->onlyAllow(string, string)
[internal function] → VendorsController->delete(string)
CORE/Cake/Controller/Controller.php line 485 → ReflectionMethod->invokeArgs(VendorsController, array)
CORE/Cake/Routing/Dispatcher.php line 186 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 161 → Dispatcher->_invoke(VendorsController, CakeRequest, CakeResponse)
APP/webroot/index.php line 92 → Dispatcher->dispatch(CakeRequest, CakeResponse)

无法弄清楚发生了什么 - 删除方法是直接outta蛋糕烘烤。我唯一的猜测是http文件根目录上的权限太紧,但这似乎是一个延伸。没有httpd错误。管理员前缀和没有。

都会发生这种情况

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。经过一番挖掘,我意识到我已经改变了我的环境,使用了更新版本的CakePHP(2.3.0)。但是,我正在烘焙的项目是(2.2.3)。所以,看起来在Cake 2.2.x和2.3.x之间他们改变了一些东西。

要修复我的2.2.x项目中使用2.3烘焙的控制器,我最终从控制器中的删除功能中删除了这一行......

$this->request->onlyAllow('post', 'delete');

然后我在函数的最顶部替换了以下内容......

if (!$this->request->is('post')) {
    throw new MethodNotAllowedException();
}

注意:您可以通过查看/lib/Cake/VERSION.txt文件找到您的应用正在使用的CakePHP版本。

答案 1 :(得分:0)

似乎供应商是一个保留字。重命名控制器,模型和视图工作正常。