#1 azwl
一直想试验一下sp的扩展(类的继承)问题。看到不少朋友也在问使用spPager的问题,我也提出类似的问题http://speedphp.com/bbs/thread-697-1-2.html今天实验了一下,有的朋友也许会说我下面这样不符合PHP和HTML分离(MVC)的原则,但我想HTML也是数据啊,而且分页又比较特殊(功能单一)。
主要是类似的可以扩展sp。
欢迎大家讨论。
扩展的spPager:
class myPager extends spPager
{
/**
* 分页函数
*
* @control 控制器
* @action 动作器
* @pagehandle 显示的页
* @class 分页外观CSS
* @args 附加参数
*/
function getPagerHtml($control, $action, $pagerhandle='p' , $class = null, $args = array()){
if ($class==null) $class='meneame';
$html = "";';
$pageData = $this -> getPager();
$curpage = $pageData['current_page'];
$totalpage = $pageData['total_page'];
if($curpage != $pageData['first_page']){
$url = spUrl($control, $action, $args + array($pagerhandle => $pageData['first_page']));
$html .= "首页";
}
if($curpage != $pageData['prev_page']){
$url = spUrl($control, $action, $args + array($pagerhandle => $pageData['prev_page']));
$html .= "前页";
}
$startpage = 1;
$endpage = 9;
if ($curpage > 4){
$startpage = $curpage-4;
$endpage = $curpage + 4;
}
if ($endpage > $totalpage){
$startpage = $totalpage-8;
$endpage = $totalpage;
}
if ($startpage < 1) $startpage = 1;
for($p = $startpage;$p <= $endpage;$p++){
if($p == $curpage){
$html .= "{$p}";
}else{
$url = spUrl($control, $action, $args + array($pagerhandle => $p));
$html .= "{$p}";
}
}
if($curpage != $pageData['next_page']){
$url = spUrl($control, $action, $args + array($pagerhandle => $pageData['next_page']));
$html .= "下页";
}
if($curpage != $pageData['last_page']){
$url = spUrl($control, $action, $args + array($pagerhandle => $pageData['last_page']));
$html .= "末页";
}
$html .= '
return $html;
}
}
?>
使用方法:
首先在index.php的spConfig中增加一句:
'auto_load_model' => array('myPager'),
其次php代码类似如下:
$this -> rows = spClass('Mnews') ->myPager($this -> spArgs('page', 1), 20) -> findAll(array('poster' => $userid), ' id desc ');
$this -> pager = spClass('Mnews') -> myPager() -> getPagerHtml('admin','newsmang','page');
再就是模板(smarty)中:
<{$pager}>
2010-07-06 23:21:37