Routing 调用Slim命名路由会引发异常

Routing 调用Slim命名路由会引发异常,routing,slim,named-routing,Routing,Slim,Named Routing,我有点新的Slim框架,现在我有这个问题命名路由。。。我第一条路线的代码是这样的 $app->get('/admin/home', function() use ($app){ if(!isset($_SESSION)){ $app->render('admin/login.php', [ 'message' => 'Restricted access!' ]); }else{ sessi

我有点新的Slim框架,现在我有这个问题命名路由。。。我第一条路线的代码是这样的

$app->get('/admin/home', function() use ($app){

    if(!isset($_SESSION)){
        $app->render('admin/login.php', [
            'message' => 'Restricted access!'
        ]);
    }else{
        session_start();
        $app->render('admin/home.php', [
            'username' => $_SESSION['username']
        ]);
    }

})->name('/admin/home');
$app->post('/admin/login', function() use ($app, $conn) {
    $app->urlFor('/admin/home');
})->name('/admin/login');
但是,当我从另一条这样的路线调用这条路线时

$app->get('/admin/home', function() use ($app){

    if(!isset($_SESSION)){
        $app->render('admin/login.php', [
            'message' => 'Restricted access!'
        ]);
    }else{
        session_start();
        $app->render('admin/home.php', [
            'username' => $_SESSION['username']
        ]);
    }

})->name('/admin/home');
$app->post('/admin/login', function() use ($app, $conn) {
    $app->urlFor('/admin/home');
})->name('/admin/login');
它引发异常“已存在名为:/admin/login的命名路由”


我就是不明白。。。甚至可以从另一条路线呼叫一条路线吗?正如我在Slim文档中看到的,它应该是。。。我哪里做错了?谢谢

避免用斜杠命名路线

相反,请尝试以下方法:

$app->get('/admin/home', function() use ($app){

  // details here

})->name('admin_home');
这样称呼:

$app->post('/admin/login', function() use ($app, $conn) {
  echo $app->urlFor('admin_home'); // test it
})->name('admin_login');
此外,在这两个例子中,你给出的名字目前没有什么优势。你是说:“给我找到
/admin/home
的路线,它就回来了
/admin/home
。如果它们相同,为什么不使用字符串呢。相反,命名路由是一种方便的方法,当您执行返回url不完全清楚的内容等操作时非常有用

简单的例子:

name('user\u login')
可以映射到
users/login

但是
name('admin\u login')
可能映射到
admin/login

增加清晰度的路线:

名称(“所有客户”)
->
/customers

name('top\u n\u customers)
->
/customers/top/{count:[0-9]+}

name('最近的客户)
->
/customers/recent/{count:[0-9]+}

爱好者

`name('filtered_customers)` -> `/customers/{field:[a-z]+}/{value}`

// example: 
/customers/country/spain       // customers in Spain
/customers/created/2016-01-01  // New customers this year
显然,在最后一个示例中,您必须检查有效字段,如果不支持,则返回适当的响应


注意:该语法适用于Slim Framework 3.0。相应地调整版本2.0。

@Rob你是说另一篇文章吗?这个问题是关于Slim的,不是关于jQuery的。