发新话题
打印

用symfony实现ajax分页效果

用symfony实现ajax分页效果

新建一个ajax分页的类:
复制内容到剪贴板
代码:
<?php
/**
       @name               ajaxpager.class.php
       @desc               allows ajax pagination.
                            $pager:pager object created using sfPropelPager
                            $url:URL of desired action.(mostly current ajax action)
                            $divId:id of div to be updated after pagination
                            $params:extra parameters to send with pager (but not implemented yet.you can implement it by yourself)
                            $appear_effect:visual effect on completing the request.(default is 'Appear').You can use also 'Grow' or 'SlideDown' etc.
       @author             Ahmet ERTEK, [email]erteka@gmail.com[/email]
       @copyright          DVS Bilisim, [url]www.dvs-tr.com[/url]
       @version            1.0.0
  
*/
class ajaxpager
{
    private $pager;
    private $divId;
    private $url;
    private $params;
    private $appear_effect;
  
    /**
       @name               ajaxpager.class.php
       @desc               allows ajax pagination.
                            $pager:pager object created using sfPropelPager
                            $url:URL of desired action.(mostly current ajax action)
                            $divId:id of div to be updated after pagination
                            $params:extra parameters to send with pager (but not implemented yet.you can implement it by yourself)
                            $appear_effect:visual effect on completing the request.(default is 'Appear').You can use also 'Grow' or 'SlideDown' etc.
       @author             Ahmet ERTEK, [email]erteka@gmail.com[/email]
       @copyright          DVS Bilisim, [url]www.dvs-tr.com[/url]
       @version            1.0.0
  
*/
    public function ajaxpager($pager,$url,$divId,$params=null,$appear_effect='Appear')
    {
        $this->pager=$pager;
        $this->divId=$divId;
        $this->url=$url;
        $this->params=$params;
        $this->appear_effect=$appear_effect;
  
    }
/**
       @name               ajaxpager.class.php
       @desc               prints pagination.
       @author             Ahmet ERTEK, [email]erteka@gmail.com[/email]
       @copyright          DVS Bilisim, [url]www.dvs-tr.com[/url]
       @version            1.0.0
  
*/
    public function printPager()
    {
        $pager=$this->pager;
        $url=$this->url;
        $divId=$this->divId;
        $appear_effect=$this->appear_effect;
  
        if ($pager->haveToPaginate())
        {
            echo link_to_remote('&laquo;', array(
            'update' => $divId,
            'url'    => $url.'?page='.$pager->getFirstPage(),
            'complete'=>visual_effect($appear_effect, $divId),
            'loading'=>"$('$divId').innerHTML='<img src=/images/indicator.gif border=0>'",
            ), array('class'=>'contentLink'));
  
            link_to_remote('<', array(
            'update' => $divId,
            'url'    => $url.'?page='.$pager->getPreviousPage(),
            'complete'=>visual_effect($appear_effect, $divId),
            'loading'=>"$('$divId').innerHTML='<img src=/images/indicator.gif border=0>'",
            ), array('class'=>'contentLink'));
  
            $links = $pager->getLinks();
            foreach ($links as $page)
            {
                echo($page == $pager->getPage()) ? $page : link_to_remote($page, array(
                'update' => $divId,
                'url'    => $url.'?page='.$page,
                'complete'=>visual_effect($appear_effect,$divId),
                'loading'=>"$('$divId').innerHTML='<img src=/images/indicator.gif border=0>'",
                ), array('class'=>'contentLink'));
  
                if ($page != $pager->getCurrentMaxLink()){ echo "-"; }
            }
  
            echo link_to_remote('&raquo;', array(
            'update' => $divId,
            'url'    => $url.'?page='.$pager->getNextPage(),
            'complete'=>visual_effect($appear_effect, $divId),
            'loading'=>"$('$divId').innerHTML='<img src=/images/indicator.gif border=0>'",
            ), array('class'=>'contentLink'));
  
            link_to_remote('>', array(
            'update' => $divId,
            'url'    => $url.'?page='.$pager->getLastPage(),
            'complete'=>visual_effect($appear_effect, $divId),
            'loading'=>"$('$divId').innerHTML='<img src=/images/indicator.gif border=0>'",
            ), array('class'=>'contentLink'));
        }
    }
}
  
?>
调用方法:
复制内容到剪贴板
代码:
<?php
$ajax_pager=new ajaxpager($pager,'myDivId','account/pictures?id='.$accountId,null,'SlideDown');
$ajax_pager->printPager();
?>
努力为phpres做贡献
时刻准备着,当机会来临时你就成功了
打好基础,增加社会经验
资深技术工程师是我的梦想
承接各种团体网站外包服务和各种it技术培训
准备申请AJAX版大,希望大家支持~~

TOP

发新话题