ManaPHP\Paginator::renderAsHtml PHP Method

renderAsHtml() public method

public renderAsHtml ( string $urlTemplate = null ) : string
$urlTemplate string
return string
    public function renderAsHtml($urlTemplate = null)
    {
        if ($urlTemplate === null) {
            if (!$this->request->hasServer('REQUEST_URI')) {
                throw new PaginatorException('REQUEST_URI is not exist in $_SERVER');
            } else {
                $urlTemplate = $this->request->getServer('REQUEST_URI', 'ignore');
            }
            if (strpos($urlTemplate, '?page=') === false && strpos($urlTemplate, '&page=') === false) {
                $urlTemplate .= (strpos($urlTemplate, '?') === false ? '?' : '&') . 'page={page}';
            } else {
                $urlTemplate = preg_replace('#([\\?&]page)=\\d+#', '\\1={page}', $urlTemplate);
            }
        }
        if (strpos($urlTemplate, '{page}') === false) {
            throw new PaginatorException('`:template` url template is invalid: it must contain {page} pattern', ['template' => $urlTemplate]);
        }
        $str = '';
        $str .= '<ul class="pagination">' . PHP_EOL;
        $str .= '<li class="first"><a href="' . str_replace('{page}', 1, $urlTemplate) . '">&lt;&lt;</a></li>' . PHP_EOL;
        $str .= '<li class="prev"><a href="' . str_replace('{page}', $this->prev, $urlTemplate) . '">&lt;</a></li>' . PHP_EOL;
        $startPage = (int) min($this->page - ceil($this->numberOfPages / 2), $this->pages - $this->numberOfPages);
        $startPage = max(0, $startPage) + 1;
        $endPage = min($startPage + $this->numberOfPages - 1, $this->pages);
        for ($i = $startPage; $i <= $endPage; $i++) {
            if ($i === $this->page) {
                $str .= '<li class="active"><a href="' . str_replace('{page}', $i, $urlTemplate) . '">' . $i . '</a></li>' . PHP_EOL;
            } else {
                $str .= '<li><a href="' . str_replace('{page}', $i, $urlTemplate) . '">' . $i . '</a></li>' . PHP_EOL;
            }
        }
        $str .= '<li class="next"><a href="' . str_replace('{page}', $this->next, $urlTemplate) . '">&gt;</a></li>' . PHP_EOL;
        $str .= '<li class="last"><a href="' . str_replace('{page}', $this->pages, $urlTemplate) . '">&gt;&gt;</a></li>' . PHP_EOL;
        $str .= '</ul>' . PHP_EOL;
        return $str;
    }