• gleez 下分页功能优化


    gleez 下分页功能优化

     

    当一个控制器里的方法只调用了一次分页功能,且在index的方法里,则无需进行以下优化,否则可以根据建议内容优化;


    找到/modules/gleez/classes/gleez/pagination.php文件下的url方法;修改内容见红色字体


    public function url($page = 1)

    {

    // Clean the page number

    $page = max(1, (int) $page);

     

    // gleez cms pagination

    $pager = '/p'. $page;


    // No page number in URLs to first page

    if ($page === 1 AND ! $this->config['first_page_in_url'])

    {

    $page = NULL;

    $pager = NULL;

    }

     

    switch ($this->config['current_page']['source'])

    {

    case 'query_string':

     

    //return URL::site($this->_route->uri($this->_route_params).

    // $this->query(array($this->config['current_page']['key'] => $page)));

    //当调用分页功能时,带uri传值时,则在url链接直接增加查询页数;否则显示的url默认指向该控制器的index的方法,后增加查询页数(且url省略index方法名显示)

    if($this->_uri){

    return URL::site($this->_uri.

    $this->query(array($this->config['current_page']['key'] => $page)));

    }else{

    return URL::site($this->_route->uri($this->_route_params).

    $this->query(array($this->config['current_page']['key'] => $page)));

    }



    case 'route':

    return URL::site($this->_route->uri(

    array_merge(

    $this->_route_params,

    array($this->config['current_page']['key'] => $page)

    )

    ). $this->query());

    case 'cms':

    return URL::site($this->_uri . $pager . $this->query());

    }


    return '#';

    }


    在控制器方法里调用分页功能的方法,写法如下:

    public function action_select()

    {

    $this->title = __(‘分页测试’);

    $sql_p = “SELECT * FROM products”;

    $p_values = DB::query(Database::SELECT,$sql_p)

              ->execute()

               ->as_array();

       //计算总的查询记录

        $count = count($p_values );

       //分页

        $pagination = Pagination::factory(array(

          'items_per_page' =>20,

         'total_items' => $count,

          'uri' => $this->request->uri(),//优化分页功能后,新增的

       ));


       $current_page = isset($_GET['page'])?$_GET['page']:1;

       $sql_p     .=" LIMIT ".(($current_page-1)*20).",20";

       $p_values  = DB::query(Database::SELECT,$sql_p )

         ->execute()

         ->as_array();

    //加载试图

    $view = View::factory('fenye')

               ->bind("pagination",$pagination)

    ->bind(“p_values”,$values);

            $this->response->body($view);

    }

    视图文件中,增加分页的显示,如下


    <table>

    <thead>

    <tr>

    <th>model</th>

    <th>属性</th>

    </tr>

    </thead>


    <tbody>

    <?php foreach($values as $key => $value){?>

    <tr>

    <td></td>

    <td></td>

    <?php } ?>

    </tbody>

    </table>

    <?php echo $pagination;?>//分页显示





  • 相关阅读:
    【Codeforces Round】 #431 (Div. 2) 题解
    最强大脑 题解
    Game02 最新版本2.0.0
    如何移除Chrome浏览器让人不爽的GoogleUpdate.exe后台更新进程
    VS2010常用插件介绍
    悲催-在当当网买书买到盗版
    优化Angular应用的性能
    纯js实现自定义模态框
    AngularJS方法 —— angular.bind
    Angular
  • 原文地址:https://www.cnblogs.com/aprils/p/5123695.html
Copyright © 2020-2023  润新知