私が行ったことは、Library::locate を使用してコントローラを見つけ、ホワイトリスト プロパティに基づいて Router::match を呼び出すことです。また、多くのモデルが使用する共有コントローラーもあり、そこにホワイトリストがあるモデルで検索を使用します。これは一種の機能ですが、ルートを逆にしようとすると問題が発生し、「パラメーターの一致が見つかりません」という例外が発生します。たとえば、以下の例。では、大きなものに対する適切な答えがない場合、このルート マッチが失敗する理由を知っていますか?
Router::connect(
'/api/3/vouchers/{:id}/{:action:(handout|generate|give)}',
array('http:method' => 'POST', 'controller' => 'Vouchers', 'type' => 'json')
);
$result = Router::match(array(
'controller'=>'Vouchers',
'action'=>'generate',
'id' => '{:id}', // *
'http:method' => 'POST',
'type'=>'json'
));
*: id の値として {:id} を使用する理由は、リンクを作成するのではなく、ルートを表示したいからです。