Routing 调用Slim命名路由会引发异常
我有点新的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
$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的。