@php $prev_dots = $next_dots = false; if ($page > $max_page) { $page = $max_page; $prev = $page - 1; $next = $page + 1; } if ($page == 1) { $page_range = ['current' => (int) $page]; if ($max_page >= 2) { $page_range['n1'] = (int) $page + 1; } if ($max_page >= 3) { $page_range['n2'] = (int) $page + 2; } if ($max_page >= 4) { $page_range['n3'] = (int) $page + 3; } if ($max_page >= 5) { $page_range['n4'] = (int) $page + 4; if (($max_page - ($page_range['n4'])) >= $page_range['n4']) { $next_dots = true; } } } elseif ($page == 2) { $page_range = [ 'p1' => (int) $page - 1, 'current' => (int) $page, ]; if ($max_page >= 3) { $page_range['n1'] = (int) $page + 1; } if ($max_page >= 4) { $page_range['n2'] = (int) $page + 2; } if ($max_page >= 5) { $page_range['n3'] = (int) $page + 3; if (($max_page - ($page_range['n3'])) >= $page_range['n3']) { $next_dots = true; } } } elseif ($page == ($max_page - 1)) { $p3 = (int) $page - 3; $p2 = (int) $page - 2; $p1 = (int) $page - 1; $n1 = (int) $page + 1; $page_range = []; if ($p3 > 0) { $page_range['p3'] = $p3; } if ($p2 > 0) { $page_range['p2'] = $p2; } if ($p1 > 0) { $page_range['p1'] = $p1; } $page_range['current'] = (int) $page; if ($n1 > 0) { $page_range['n1'] = $n1; } if (($prev - 2) < ($prev - 1)) { $prev_dots = true; } } elseif ($page == $max_page) { $p4 = (int) $page - 4; $p3 = (int) $page - 3; $p2 = (int) $page - 2; $p1 = (int) $page - 1; if ($p4 > 0) { $page_range['p4'] = $p4; } if ($p3 > 0) { $page_range['p3'] = $p3; } if ($p2 > 0) { $page_range['p2'] = $p2; } if ($p1 > 0) { $page_range['p1'] = $p1; } $page_range['current'] = (int) $page; if($max_page > 3) { if (($prev - 2) < ($prev - 1)) { $prev_dots = true; } } else { $prev_dots = false; } } else { $p2 = (int) $page - 2; $p1 = (int) $page - 1; $n1 = (int) $page + 1; $n2 = (int) $page + 2; if ($p2 > 0) { $page_range['p2'] = $p2; } if ($p1 > 0) { $page_range['p1'] = $p1; } $page_range['current'] = (int) $page; if ($n1 > 0) { $page_range['n1'] = $n1; } if ($n2 > 0) { $page_range['n2'] = $n2; } if ($page == 3) { if (isset($page_range['n2'])) { if (($max_page - ($page_range['n2'])) >= $page_range['n2']) { $next_dots = true; } } } else { if (($prev - 2) < ($prev - 1)) { $prev_dots = true; } if (($next + 2) <= $max_page) { $next_dots = true; } } } @endphp @if ($prev_dots) ... @endif @if (isset($page_range['p4'])) {{ $page_range['p4'] }} @endif @if (isset($page_range['p3'])) {{ $page_range['p3'] }} @endif @if (isset($page_range['p2'])) {{ $page_range['p2'] }} @endif @if (isset($page_range['p1'])) {{ $page_range['p1'] }} @endif {{ $page }} @if (isset($page_range['n1'])) {{ $page_range['n1'] }} @endif @if (isset($page_range['n2'])) {{ $page_range['n2'] }} @endif @if (isset($page_range['n3'])) {{ $page_range['n3'] }} @endif @if (isset($page_range['n4'])) {{ $page_range['n4'] }} @endif @if ($next_dots) ... @endif