Laravel 两侧分页无法正常工作

Pie*_*ter 6 pagination laravel

在我的 Laravel (5.7) 控制器中,我已将分页 +“每侧导航”设置为 2 个项目。然而,这在我看来是行不通的。我收到的项目比 2 个多得多,这导致我的窗口在小型移动设备上崩溃。

造成这种情况的原因是什么以及如何解决?我的意思是,我可以用 CSS 修复它,但我想以正确的方式修复它。

我在控制器中的代码:

public function index(Request $request)
{
    $type = 'all';

    if ($request->has('type')) {
        if ($request->type == 'all') {
            $materials = Material::paginate(10)->onEachSide(2);
        } else {
            $type = $request->type;
            $materials = Material::where('type', $type)->paginate(10)->onEachSide(2);
        }
    } else {
        $materials = Material::paginate(10)->onEachSide(2);
    }

    
    $stock = array(
        'enkelzitKajaks' => Material::where('type', 'Enkelzitkajak')->count(),
        'dubbelzitKajaks' => Material::where('type', 'Dubbelzitkajak')->count(),
        'canadeseKanos' => Material::where('type', 'Canadese kano')->count(),
        'langePeddels' => Material::where('type', 'Lange peddel')->count(),
        'kortePeddels' => Material::where('type', 'Korte peddel')->count(),
        'tonnetjes' => Material::where('type', 'Tonnetje')->count(),
        'zwemvesten' => Material::where('type', 'Zwemvest')->count()
    );

    return view('materials.index')->with('materials', $materials)->with('stock', $stock)->with('type', $type);
}
Run Code Online (Sandbox Code Playgroud)

我在视图中的代码:

<section class="pagination">
    <div class="container">
        <div class="row">
            <div class="col-12">
                {{ $materials->links() }}
            </div>
        </div>

        <hr>
    </div>
</section>
Run Code Online (Sandbox Code Playgroud)

我在小型设备上的视图截图:

在此输入图像描述

小智 6

首先,laravel 分页onEachSide(x)除了中间部分之外还有前导和尾部部分。前两页和尾两页。

您正在尝试使用onEachSide(2)和第 6 页。现在我们尝试看看分页的逻辑。

在 laravel 中,当使用onEachSide(2)时,它会显示这样的分页

前导两页 当前页 - 2 当前页面 当前页+2 拖尾两页
1,2 4,5 6 7,8 22,23

然后考虑分页的第一部分,它需要显示第 1 页到第 8 页,而不显示第 3 页。它需要是一个带点的显示按钮,而不是第三页。

然后,它将显示原始的第 3 页码,而不是显示第三页的带点的按钮。

在第 6 页之后,laravel 分页 onEachSide(2) 将正常工作


S N*_*rma 2

你应该onEachSide在刀片中使用它。

onEachSide从控制器中取出。当您创建 API 时,在控制器中使用onEachSide会很有帮助。onEachSide而是在刀片文件中使用。

<section class="pagination">
    <div class="container">
        <div class="row">
            <div class="col-12">
                {{ $materials->onEachSide(1)->links() }}
            </div>
        </div>

        <hr>
    </div>
</section>
Run Code Online (Sandbox Code Playgroud)

用户可以通过改变参数来管理链接窗口onEachSide

https://laravel.com/docs/8.x/pagination# adjustment-the-pagination-link-window

  • 是的,我已经尝试过这个,但结果仍然相同。分页仍然显示更多的项目。 (2认同)