我所做的是使用Library :: locate来查找控制器,根据白名单属性调用Router :: match。我还有一个共享控制器,许多模型使用,我在那里使用白名单的模型上使用locate。这有点起作用,但是我在试图反转路线并且没有找到参数匹配时遇到了麻烦。例外。例如下面的例子。所以,如果你没有一个很好的答案,你知道为什么这个路线匹配失败?
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的值的原因是我希望显示路线,而不是创建链接。