如何在Slim 2中对博客文章进行分页?

时间:2015-08-02 10:55:42

标签: php slim

我正在尝试使用Slim 2 Framework对博客文章进行分页,但我对如何在rest框架中传递参数感到困惑。

我们如何在Slim 2中参加localhost/blog.php?page=2

1 个答案:

答案 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+'));