我使用Macaw PHP路由器类。
我试图找出一种方法来调用带有过滤器的路由(:any)然后在闭包内进行比较,如果找不到匹配的第二条路线,下面的代码将仅按预期运行第一条路线,我不知道告诉Macaw班看第二条路的方法。
//match any request again a case inside the closure
Macaw::any('(:any)', function($slug)(){
if($slug == 'sample'){
//match
} else {
//somehow go to the next route
}
});
//otherwise look here
Macaw::any('(:any)', function(){
//do something
});
我打算做的是让最后的路线看起来没有路线,如果在他们自己关闭的内部有匹配。
基本上我希望任何url被路由到多个闭包以检查匹配(它们将来自插件)然后如果找不到匹配则调用最后一个路径。
我刚刚注意到你可以做到以下,这正是我需要的
$app = new \Slim\Slim();
$app->get('/hello/Frank', function () use ($app) {
echo "You won't see this...";
$app->pass();
});
$app->get('/hello/:name', function ($name) use ($app) {
echo "But you will see this!";
});
$app->run();
我知道我可以包括苗条,但因为我只想要过度杀伤的路由。
答案 0 :(得分:0)
希望这有帮助
Macaw::get('/(:any)', function($slug){
echo 'Hello World!';
});
Macaw::get('/(:any)/', function($slug){ // Required for url ends with '/' (eg: domain.com/foo/ )
echo 'Hello World! ' . $slug;
});
Macaw::get('/(:any)/(:any)', function($slug, $slug2) {
echo 'The slug is: ' . $slug2;
});
答案 1 :(得分:0)
解决了!调用haltOnMatch停止或返回流程,以便我可以执行以下操作:
Router::any('(:all)', function($request){
if($request == 'blog'){
echo 'match';
} else {
//go to next route
Router::haltOnMatch(false);
}
});
这样我可以使用多个Router :: any('(:all)'调用。