金刚鹦鹉的多条路线

时间:2014-08-15 16:52:21

标签: php routing

我使用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();

我知道我可以包括苗条,但因为我只想要过度杀伤的路由。

2 个答案:

答案 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)'调用。