1

今夜、レコードを削除しようとすると奇妙なエラーが発生しました:

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)

何が起こっているのか理解できません。私の唯一の推測は、http ドキュメント ルートに対するアクセス許可が厳しすぎるということですが、それは無理があるように思えます。httpd エラーはありません。これは、管理プレフィックスがある場合とない場合の両方で発生します。

4

2 に答える 2

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 のバージョンを確認できます。

于 2013-04-03T12:28:19.343 に答える
0

Vendor は予約語のようです。コントローラー、モデル、ビューの名前変更は正常に機能します。

于 2013-03-22T06:45:28.403 に答える