Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Slim 2中为博客文章分页?_Php_Slim - Fatal编程技术网

Php 如何在Slim 2中为博客文章分页?

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框架对博客文章进行分页,但我对如何在rest框架中传递参数感到困惑


在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请查看代码..它正在工作..我想知道代码是否正确,或者我们是否可以改进它!