Page类扩展行数选择下拉列表框

浏览:232 发布日期:2016/09/16 分类:技术分享 关键字: page 下拉列表框
<?php

namespace Tools;

class PageExtend extends \Think\Page {

    public function __construct($totalRows, $listRows = 20, $parameter = array()) {
        //保证$this->listRows在【10,20,...,100】中
        $number = max(intval(I("listrows", $listRows)), 10);
        $this->listRows = min($number-=$number % 10, 100);
        parent::__construct($totalRows, $this->listRows, $parameter); //父类构造函数
        $this->parameter["listrows"] = $this->listRows; //添加变量
        $this->parameter = str_replace("/", "-", $this->parameter); //PATHINFO 模式下,2016/09/01格式的日期参数会产生访问错误。
    }

    /**
     * 去掉两端包裹的<div></div>标签,加入下拉列表框后重新包裹
     * @return string
     */
    public function show() {
        $page_str = parent::show();
        $patterns[0] = '%</?div>%i';
        $replacements[0] = '';
        $page_str = "<div>" . $this->selectlistrows() . preg_replace($patterns, $replacements, $page_str) . "</div>";
        return $page_str;
    }

    /**
     * 行数选择下拉列表框
     * @return string
     */
    private function selectlistrows() {
        $str = '<select name="listrows" id="listrows" style="margin-right:20px;background-color:#ECE9D8" onchange = "javascript:window.location=this.value;">';
        for ($i = 1; $i <= 10; $i++) {
            $rows = $i * 10;
            $choosed = $rows === intval($this->listRows) ? " selected" : "";
            $str.="<option value = {$this->listrowsurl($rows)} $choosed>{$rows}</option>";
        }
        $str.="</select>";
        return $str;
    }

    /**
     * 下拉列表框每项对应的URL地址
     * @param type $rows
     * @return type
     */
    private function listrowsurl($rows) {
        $this->parameter["listrows"] = $rows;
//        $this->parameter["p"] = $this->firstRow / $this->listRows + 1;
        $this->parameter["p"] = 1;
        $url = U(ACTION_NAME, $this->parameter);
        return urldecode($url);
    }

}
最佳答案
评论( 相关
后面还有条评论,点击查看>>