Php 如何在Slim 2中为博客文章分页?
我试图用Slim 2框架对博客文章进行分页,但我对如何在rest框架中传递参数感到困惑Php 如何在Slim 2中为博客文章分页?,php,slim,Php,Slim,我试图用Slim 2框架对博客文章进行分页,但我对如何在rest框架中传递参数感到困惑 在Slim 2中,我们如何参加localhost/blog.php?page=2?您确实可以在Slim中使用像localhost/blog.php?page=2这样的URL,但这违背了路由系统的目的。理想的方法是完全使用路由进行路由,例如/blog/2 然而,你也可以用你自己的方式去做。为/blog设置路由,然后在控制器函数中读取$\u GET['page']。不要忘记将其强制转换为int,这样输入是安全的。
在Slim 2中,我们如何参加
localhost/blog.php?page=2
?您确实可以在Slim中使用像localhost/blog.php?page=2
这样的URL,但这违背了路由系统的目的。理想的方法是完全使用路由进行路由,例如/blog/2
然而,你也可以用你自己的方式去做。为/blog
设置路由,然后在控制器函数中读取$\u GET['page']
。不要忘记将其强制转换为int
,这样输入是安全的。始终使用isset()
检查参数是否存在,以防止不存在索引通知
顺便说一下,我注意到这段代码有一个问题:
$page = $request->get('page');
// Get the current page if not set to page 1
$currentPage = isset($page) ? $page : 1;
if(!is_numeric($currentPage)) {
$app->notFound();
}
您在这里使用了isset()
,这没有用--$page
将始终设置在第一行之后。这适用于检查$\u GET
超全局中是否存在条目,但我们这里不使用它
此外,最好向路由参数添加一个条件,而不是手动检查它是否是一个数字。把所有这些放在一起,你可以这样做:
<?php
$app = new \Slim\Slim();
$app->get('/blog(/:page)', function() use ($app) {
$page = $request->get('page');
$maxPage = 4; // This would be done dynamically
if ($page < 1 || $page > $maxPage) {
$app->notFound();
}
// More code here...
})->conditions(array('page' => '\d+'));
使用路由系统可能更容易(更干净),例如/blog/2
。这一点在本文中进行了解释。你需要blog.php
还是?page=
URL之类的东西?我们可以参加类似blog的URL吗/?page=2请查看代码..它正在工作..我想知道代码是否正确,或者我们是否可以改进它!