上一页、下一页的实现思想:
首先是获取传输过来的ID;
$id = intval($this->_context->id);
intval() 函数用于获取变量的整数值。
其次用当前的ID分别查找上个ID和下一个ID的内容;
$previous = Blog::find('id<?',$id)->order('id desc')->getOne();
$next = Blog::find('id>?',$id)->getOne();
如果能确保id是连续的,在find中的条件可以更改为$id-1或$id+1;
查找上一个ID内容需要用到 order('id desc') ,因为查找是按顺序进行的,如果不设置为倒序查找,则会从第一个ID开始查询。
最后将结果输出。
$this->_view['previous']=$previous;
$this->_view['next']=$next;
将查询到的上一条数据和下一条数据传给前端;
前端将数据进行输出显示;
<?php if (empty($previous->subject)):?><p>上一篇:这是第一条</p><?php else:?>
<p>上一篇:<a href="<?php echo url('blog::detail', array('id' => $previous->id)); ?>"><?php echo $previous->subject;?><?php endif;?></a></p>
<?php if (empty($next->subject)):?><p>下一篇:这是最后一条</p><?php else:?>
<p>下一篇:<a href="<?php echo url('blog::detail', array('id' => $next->id)); ?>"><?php echo $next->subject;?>
<?php endif;?></a></p>
输出显示时先进行判断,判断是否是第一条内容还是最后一条内容,因为第一条内容往前没有内容了;最后一条内容同理,所以需要先判断。
显示结果如下: