0

存在しない関数に対して「Missing Route」エラーが発生するのはなぜですか。

Reservationsコントローラー内にはadd、1 つの引数を持つ関数があります。

public function add($carid = null)
{
... 
}

マッチングルート:

Router::scope('/', function ($routes) {
Router::connect('/rentcar/:id', ['controller' => 'Reservations', 'action' => 'add'],['pass' => ['id'], 'id' => '[0-9]+']);
// rest of the routes not important 
...
});
Plugin::routes();

任意のページにアクセスすると、次のエラーが表示されます。

http://i.stack.imgur.com/ESX5I.jpg

エラーメッセージには次のように記載されています。

エラー: "array ( 'controller' => 'Reservations', 'action' => 'add', 'plugin' => NULL, '_ext' => NULL, )" に一致するルートが見つかりませんでした。

...引数のない関数を持っていないので、これは奇妙です。add()代わりに、add($carid)1つの引数を持つ関数があります。

しかし、そのルートを追加すると、すべて正常に動作します:

Router::connect('/rentcar2', ['controller' => 'Reservations', 'action' => 'add']);

何が起こっている?

4

1 に答える 1

0

問題は、内部に PHP コードを含むコメント アウトされた HTML コードにありました。次のようなコードです。

<!-- <li role="presentation"><?= $this->Html->link(__('New Reservation'), ['controller' => 'Reservations', 'action' => 'add']) ?></li> -->

コントローラーの引数addのない古い関数が含まれています。Reservations同様のコードを削除したところ、すべて正常に機能しました。

于 2016-02-10T22:28:12.403 に答える