我正在尝试使用Slim 2 Framework对博客文章进行分页,但我对如何在rest框架中传递参数感到困惑。
我们如何在Slim 2中参加localhost/blog.php?page=2
?
答案 0 :(得分:2)
您确实可以在Slim中使用localhost/blog.php?page=2
之类的网址,但它会违背路由系统的目的。理想的方法是完全使用路由进行路由,例如/blog/2
。
但是,您也可以按照自己的方式进行操作。为/blog
设置路由,然后在控制器功能中读取$_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
总是在第一行之后设置。这适用于检查$_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+'));