gpt4 book ai didi

laravel - 如何使用 Vuetify 和 Laravel 进行分页?

转载 作者:行者123 更新时间:2023-12-03 22:06:47 29 4
gpt4 key购买 nike

晚安

我正在尝试使用 Vuetify 和 Laravel 进行服务器端分页。

但是 Vuetify 提供的方法并没有让我正确地做到这一点。我有一个完整的页面,我想用 Vuetify 组件来实现。

我附上了用简单 Bootstrap 制作的代码。

  <ul class="pagination">
<li class="page-item" v-if="pagination.current_page > 1">
<v-btn flat icon color="red lighten-2">
<v-icon @click.prevent="changePage(pagination.current_page - 1, search)">thumb_down</v-icon>
</v-btn>
</li>
<li class="page-item" v-for="page in pagesNumber" :key="page" :class="[page == isActived ? 'active' : '']">
<v-btn fab dark color="indigo" @click.prevent="changePage(page, search)" v-text="page">
</v-btn>
</li>
<li class="page-item" v-if="pagination.current_page < pagination.last_page">
<v-btn flat icon color="red lighten-2">
<v-icon @click.prevent="changePage(pagination.current_page + 1, search)">thumb_down</v-icon>
</v-btn>
</li>
</ul>

页面到服务器的方法:
    methods:{
get(page, search){
let url = `http://127.0.0.1:8000/api/articles?page=${page}&search=${search}`;
axios.get(url)
.then( response => {

let res = response.data
this.products = res.articles.data;
this.pagination = res.pagination;
})
.catch(function (error) {
console.log(error);
})
},
changePage(page, search){
this.pagination.current_page = page;
this.get(page, search);
},
},

前面的代码可以正常工作,但没有实际使用 Vuetify 组件的分页。

使用 Vuetify 组件进行分页我只显示分页的长度,但我无法在服务器提供的页面之间传递。
      <v-pagination
v-model="pagination.current_page"
:length="pagination.total"
prev-icon="mdi-menu-left"
next-icon="mdi-menu-right"
@input="next"
></v-pagination>

找资料表明使用 @input="下一个"我可以调用一个方法转到下一页 但是我可以用什么来退货?

如何单击任何页码并向服务器请求页面,就像我使用 Bootstrap 制作的代码一样?

我希望我能帮忙,我谢谢你。

最佳答案

以下是 Laravel 5.5 和 Vuetify 1.3 对我有用的:

HTML

<v-pagination
v-model="pagination.current"
:length="pagination.total"
@input="onPageChange"
></v-pagination>

JS
export default {
data() {
return {
users: null,
pagination: {
current: 1,
total: 0
}
}
},
methods: {
getUsers() {
window.axios.get('/api/users?page=' + this.pagination.current)
.then(response => {
this.users = response.data.data;
this.pagination.current = response.data.current_page;
this.pagination.total = response.data.last_page;
});
},
onPageChange() {
this.getUsers();
}
},
mounted() {
this.getUsers();
}
}

Laravel
public function users()
{
$users = User::paginate(10);

return response($users, 200);
}

安装组件后, getUsers()会被调用。 pagination.current默认为 1,因此将加载第一页。响应将设置 pagination.total . Vuetify 处理将页面按钮绑定(bind)到 pagination.current这样当您单击一个时, pagination.current设置为页码,然后 @input触发器 getUsers()使用 pagination.current获取您选择的页面。

注意:在 laravel 5.8 中,分页响应对象可能已经从 response.data.current_page 更改了。至 response.data.meta.current_pageresponse.data.last_pageresponse.data.meta.last_page.

关于laravel - 如何使用 Vuetify 和 Laravel 进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697892/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com