国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

視圖使用think-template 利用think-template的擴(kuò)展標(biāo)簽改分頁器。

weplus

webman分頁要安裝分頁組件,很方便了。但每次用的時(shí)候都要實(shí)例化Paginator,還要去修改分頁器的樣式(默認(rèn)Bootstrap)。但還是總覺得有點(diǎn)麻煩。

利用think-template的擴(kuò)展模板標(biāo)簽庫免實(shí)例化Paginator

1、視圖使用think-template

composer require topthink/think-template

2、修改配置config/view.php為

<?php
use support\view\ThinkPHP;

return [
    'handler' => ThinkPHP::class,
    'options' => [
        'view_suffix'     => 'html',
        'tpl_begin'       => '{',
        'tpl_end'         => '}',
        // 擴(kuò)展模板標(biāo)簽庫
        'taglib_pre_load' => 'your taglib directory',
    ]
];

3、新建一個(gè)標(biāo)簽擴(kuò)展

<?php
declare(strict_types=1);

namespace platform\extend\taglib;

use think\template\TagLib;

class Tag extends TagLib
{
    /**
     * 定義標(biāo)簽列表
     */
    protected $tags = [
        'paginator' => ['close' => 0, 'expression' => true],
    ];

    /**
     * 分頁標(biāo)簽
     */
    protected function tagPaginator(array $tag): string
    {
        $parse_str = '<?php $visiblePages = 5; ?>';
        $parse_str .= '<?php $totalPages = ceil($lists->total() / $lists->perPage()); ?>'; // 2
        $parse_str .= '<div class="card-footer flex-right">';
        $parse_str .= '<p>共 {$lists->total()} 條數(shù)據(jù)</p>';
        $parse_str .= '<?php if($totalPages>1): ?>';
        $parse_str .= '<ul class="pagination ml-8">';
        $parse_str .= '<li class="page-item {$lists->previousPageUrl()?"":"disabled"}"><a href="<?=$lists->previousPageUrl()?>">上一頁</a></li>';
        $parse_str .= '<?php if($totalPages>$visiblePages): ?>';

        $parse_str .= '<?php $pages = []; ?>';
        // 計(jì)算滑動(dòng)范圍,以當(dāng)前頁為中心
        $parse_str .= '<?php $numAdjacents = (int)floor((10 - 3) / 2); ?>';
        // 確定滑動(dòng)范圍的起始位置
        $parse_str .= '<?php if($lists->currentPage() + $numAdjacents > $totalPages): ?>';
        $parse_str .= '<?php $slidingStart = $totalPages - 10 + 2; ?>';
        $parse_str .= '<?php else: ?>';
        $parse_str .= '<?php $slidingStart = $lists->currentPage() - $numAdjacents; ?>';
        $parse_str .= '<?php endif;?>';
        $parse_str .= '<?php if($slidingStart > 2): ?>';
        $parse_str .= '<?php $slidingStart = 2; ?>';
        $parse_str .= '<?php endif;?>';
        // 計(jì)算滑動(dòng)范圍的結(jié)束位置
        $parse_str .= '<?php $slidingEnd = $slidingStart + 10 - 3; ?>';
        $parse_str .= '<?php if($slidingEnd >= $totalPages): ?>';
        $parse_str .= '<?php $slidingEnd = $totalPages - 1; ?>';
        $parse_str .= '<?php endif;?>';
        // 構(gòu)建頁碼列表
        $parse_str .= '<?php $pages[] = ["num"=>1,"url"=>$lists->url(1)]; ?>';
        $parse_str .= '<?php if($slidingStart > 2): ?>';
        $parse_str .= '<?php $pages[] = ["num"=>"...","url"=>null]; ?>';
        $parse_str .= '<?php endif;?>';
        // 沒寫完
        // 有BUG
        // 寫不來了。????????

        $parse_str .= '<?php else: ?>';
        $parse_str .= '<?php for($i = 1; $i <= $totalPages; $i++): ?>';
        $parse_str .= '<li class="page-item {$lists->currentPage()==$i?"active":""}"><a href="<?=$lists->url($i)?>">{$i}</a></li>';
        $parse_str .= '<?php endfor;?>';
        $parse_str .= '<?php endif;?>';
        $parse_str .= '<li class="page-item <?=$lists->currentPage()==$lists->lastPage()?"disabled":"" ?>"><a data-pjax="" href="<?=$lists->nextPageUrl()?>">下一頁</a></li>';
        $parse_str .= '</ul>';
        $parse_str .= '<?php endif;?>';
        $parse_str .= '</div>';
        return $parse_str;
    }
}

4、使用:
后端賦值給lists標(biāo)簽就好了

$view['lists'] = UserModel::orderBy('created_at', 'desc')->paginate();
return view('admin/user/index', $view);

前端在需要分頁器的地方插入

{tag:paginator value="lists"/}


總頁數(shù)小于5的時(shí)候直接循環(huán)了,大于5的時(shí)候計(jì)算方法沒有寫完,目前的效果是這樣。

1388 4 1
4個(gè)評(píng)論

walkor

  • weplus 2023-12-20

    。。。。我都沒有寫完,真的是很菜。只是有個(gè)思路。。。

  • rongma 2024-09-12

    /**

    定義標(biāo)簽列表
    */
    protected $tags = [
    'paginator' => ['close' => 0, 'expression' => true],
    ];
    這里定義的close=0不是閉合標(biāo)簽嗎?怎么在使用時(shí)沒有加閉合的{/tag:paginator}來結(jié)束也正常呢

weplus

能力有限,路過的大佬們有時(shí)間的話 看看能否擴(kuò)展下 Eloquent 查詢構(gòu)建器。把查詢數(shù)據(jù)寫入緩存加進(jìn)去。

  • 暫無評(píng)論
Tinywan

666

  • 暫無評(píng)論
rongma

/**

  • 定義標(biāo)簽列表
    */
    protected $tags = [
    'paginator' => ['close' => 0, 'expression' => true],
    ];
    這里定義的close=0不是閉合標(biāo)簽嗎?怎么在使用時(shí)沒有加閉合的{/tag:paginator}來結(jié)束也正常呢
  • 暫無評(píng)論

weplus

340
積分
0
獲贊數(shù)
0
粉絲數(shù)
2023-10-06 加入
??