{{-- resources/views/components/wiki/pagination.blade.php --}} {{-- props: $pagination array { total, per_page, current_page, last_page } $routeName string route name $routeParams array route params (不含分页参数) $queryParams array 额外 query string 参数,如 ['q'=>'...', 'category'=>'...'] --}} @props([ 'pagination', 'routeName', 'routeParams' => [], 'queryParams' => [], ]) @php $current = $pagination['current_page']; $last = $pagination['last_page']; if ($last <= 1) return; // 只有一页不渲染 // 生成带页码的 URL $pageUrl = function (int $page) use ($routeName, $routeParams, $queryParams): string { $qs = array_merge($queryParams, ['page' => $page]); return route($routeName, $routeParams) . '?' . http_build_query($qs); }; // 计算显示的页码范围(当前页前后各 2 页) $window = 2; $start = max(1, $current - $window); $end = min($last, $current + $window); @endphp