如何在 laravel 中使用 Bootstrap-vue 将分页包含在表格中
how to use Bootstrap-vue in laravel to include pagination to tables
我不知道如何向 tables 添加分页,以便在 tables 上显示大量数据时使页面更清晰。
我搜索了 bootstrap-vue 并学习了一些 Vue.js(组件...等)但是从以下位置看到了这段代码:
https://bootstrap-vue.js.org/docs/components/pagination-nav/
<template>
<div class="overflow-auto">
<b-pagination-nav :link-gen="linkGen" :number-of-pages="10" use- router />
</div>
</template>
<script>
export default {
methods: {
linkGen(pageNum) {
if (pageNum === 1) {
return '?'
} else {
return '?page=' + pageNum
}
}
}
}
</script>
我不明白我应该怎么做才能在我的 table 上制作此代码 运行,并使 table 分页正常工作。
这是在我的 .blade.php 中显示 table 的代码的样子:
<table class="table" style="border-radius:1em; border-collapse: collapse; overflow: hidden;">
<thead class="thead-dark">
<tr>
<th scope="col">Id</th>
<th scope="col">E-mail</th>
<th scope="col">Type_compte</th>
<th scope="col">District</th>
<th scope="col">Cds</th>
<th scope="col">crée a</th>
<th scope="col">Verifié</th>
<th scope="col">modifier</th>
<th scope="col">supprimer</th>
</tr>
</thead>
@foreach($utilisateurs as $utilisateur)
<tr>
<th>{{$utilisateur->id}}</th>
<td>{{$utilisateur->email}}</td>
<td>{{$utilisateur->Type_compte}}</td>
<td>{{$utilisateur->district == '' ? '/' : $utilisateur->district}}</td>
<td>{{$utilisateur->cds == '' ? '/' : $utilisateur->cds}}</td>
<td>{{$utilisateur->created_at}}</td>
<td>{{$utilisateur->email_verified_at=='' ? 'Non' : 'Oui'}}</td>
<form method="GET" action="/comptes/{{$utilisateur->email}}/edit">
@csrf
<td><input type="submit" class="btn btn-warning" value="Modifier"></td>
</form>
<form method="POST" action="/comptes/{{$utilisateur->email}}">
@method('DELETE')
@csrf
<td><input type="submit" class="btn btn-danger" value="Supprimer"></td>
</form>
</tr>
@endforeach
</table>
我应该怎么做才能使 table 分页正常工作?最简单的方法是什么?
为什么要在这种情况下使用 vue.js?我建议你使用默认的 Laravel 的分页。文档解释得很好,你可以在这里查看:https://laravel.com/docs/5.8/pagination
在你的情况下,它会是这样的:
@foreach($utilisateurs as $utilisateur)
<tr>
<th>{{$utilisateur->id}}</th>
<td>{{$utilisateur->email}}</td>
<td>{{$utilisateur->Type_compte}}</td>
<td>{{$utilisateur->district == '' ? '/' : $utilisateur->district}}</td>
<td>{{$utilisateur->cds == '' ? '/' : $utilisateur->cds}}</td>
<td>{{$utilisateur->created_at}}</td>
<td>{{$utilisateur->email_verified_at=='' ? 'Non' : 'Oui'}}</td>
<form method="GET" action="/comptes/{{$utilisateur->email}}/edit">
@csrf
<td><input type="submit" class="btn btn-warning" value="Modifier"></td>
</form>
<form method="POST" action="/comptes/{{$utilisateur->email}}">
@method('DELETE')
@csrf
<td><input type="submit" class="btn btn-danger" value="Supprimer"></td>
</form>
</tr>
@endforeach
{{ $utilisateurs->links() }}
代码 $utilisateurs->links() 将在视图中生成分页。
并且在控制器中,当您将数据传递给视图时,您使用 paginate(numOfRecordsPerPage) 类似这样的东西 $users = App\User ::paginate(15); 其中 User 是您正在访问的模型。
否则,如果你还想为此使用vue.js,或者换句话说,让页面动态化,而不是每次点击分页时都重新加载,那么你应该设置一个API 获取数据的端点,然后您需要再次使用 Vue 列出 table.
中的记录
我不知道如何向 tables 添加分页,以便在 tables 上显示大量数据时使页面更清晰。
我搜索了 bootstrap-vue 并学习了一些 Vue.js(组件...等)但是从以下位置看到了这段代码: https://bootstrap-vue.js.org/docs/components/pagination-nav/
<template>
<div class="overflow-auto">
<b-pagination-nav :link-gen="linkGen" :number-of-pages="10" use- router />
</div>
</template>
<script>
export default {
methods: {
linkGen(pageNum) {
if (pageNum === 1) {
return '?'
} else {
return '?page=' + pageNum
}
}
}
}
</script>
我不明白我应该怎么做才能在我的 table 上制作此代码 运行,并使 table 分页正常工作。
这是在我的 .blade.php 中显示 table 的代码的样子:
<table class="table" style="border-radius:1em; border-collapse: collapse; overflow: hidden;">
<thead class="thead-dark">
<tr>
<th scope="col">Id</th>
<th scope="col">E-mail</th>
<th scope="col">Type_compte</th>
<th scope="col">District</th>
<th scope="col">Cds</th>
<th scope="col">crée a</th>
<th scope="col">Verifié</th>
<th scope="col">modifier</th>
<th scope="col">supprimer</th>
</tr>
</thead>
@foreach($utilisateurs as $utilisateur)
<tr>
<th>{{$utilisateur->id}}</th>
<td>{{$utilisateur->email}}</td>
<td>{{$utilisateur->Type_compte}}</td>
<td>{{$utilisateur->district == '' ? '/' : $utilisateur->district}}</td>
<td>{{$utilisateur->cds == '' ? '/' : $utilisateur->cds}}</td>
<td>{{$utilisateur->created_at}}</td>
<td>{{$utilisateur->email_verified_at=='' ? 'Non' : 'Oui'}}</td>
<form method="GET" action="/comptes/{{$utilisateur->email}}/edit">
@csrf
<td><input type="submit" class="btn btn-warning" value="Modifier"></td>
</form>
<form method="POST" action="/comptes/{{$utilisateur->email}}">
@method('DELETE')
@csrf
<td><input type="submit" class="btn btn-danger" value="Supprimer"></td>
</form>
</tr>
@endforeach
</table>
我应该怎么做才能使 table 分页正常工作?最简单的方法是什么?
为什么要在这种情况下使用 vue.js?我建议你使用默认的 Laravel 的分页。文档解释得很好,你可以在这里查看:https://laravel.com/docs/5.8/pagination
在你的情况下,它会是这样的:
@foreach($utilisateurs as $utilisateur)
<tr>
<th>{{$utilisateur->id}}</th>
<td>{{$utilisateur->email}}</td>
<td>{{$utilisateur->Type_compte}}</td>
<td>{{$utilisateur->district == '' ? '/' : $utilisateur->district}}</td>
<td>{{$utilisateur->cds == '' ? '/' : $utilisateur->cds}}</td>
<td>{{$utilisateur->created_at}}</td>
<td>{{$utilisateur->email_verified_at=='' ? 'Non' : 'Oui'}}</td>
<form method="GET" action="/comptes/{{$utilisateur->email}}/edit">
@csrf
<td><input type="submit" class="btn btn-warning" value="Modifier"></td>
</form>
<form method="POST" action="/comptes/{{$utilisateur->email}}">
@method('DELETE')
@csrf
<td><input type="submit" class="btn btn-danger" value="Supprimer"></td>
</form>
</tr>
@endforeach
{{ $utilisateurs->links() }}
代码 $utilisateurs->links() 将在视图中生成分页。
并且在控制器中,当您将数据传递给视图时,您使用 paginate(numOfRecordsPerPage) 类似这样的东西 $users = App\User ::paginate(15); 其中 User 是您正在访问的模型。
否则,如果你还想为此使用vue.js,或者换句话说,让页面动态化,而不是每次点击分页时都重新加载,那么你应该设置一个API 获取数据的端点,然后您需要再次使用 Vue 列出 table.
中的记录