جميعنا يعلم ما هي أهمية pagination، حيث يجب القيام به في back-end و front end
عمل pagination في لارافيل
public function index() { return PostResource::collection(Post::paginate(20)); }
عمل pagination في VueJS
يمكن لنا الإستعانة بحزمة laravel-vue-pagination
npm install laravel-vue-pagination
إستدعاء الحزمة في الملف app.js
require('./bootstrap'); import Vue from 'vue'; Vue.component('pagination', require('laravel-vue-pagination')); Vue.component('posts-index', require('./components/Posts/index').default); const app = new Vue({ el :'#app' })
تتطلب الحزمة تحويل المتغير posts من مصفوفة إلى object ومن ثم إستخدام الوسم pagination في العرض فبداخل الـ component في المسار resources/js/components/Posts/index.vue
<script> export default { data(){ return { posts:{}, } }, mounted() { this.getResults(); }, methods:{ getResults(page = 1) { axios.get('/api/posts?page=' + page) .then(response => { this.posts = response.data; }); } } } </script>
<div> <table class="table"> <thead> <tr> <th scope="col">#</th> <th scope="col">title</th> <th scope="col">body</th> <th scope="col">created_at</th> </tr> </thead> <tbody> <tr v-for="post in posts.data" :key="post.id"> <td>{{ post.id }}</td> <td>{{ post.title }}</td> <td>{{ post.body.substring(0,30) }}</td> <td>{{ post.created_at }}</td> </tr> </tbody> </table> <pagination :data="posts" @pagination-change-page="getResults"></pagination> </div>
Waad Mawlood
الذي يقرا فاليتأكد من اصدار مكتبية \"laravel-vue-pagination\" لان الاخيرة تتعامل مع VueJS 3 اذهب الى ملف package.json \"dependencies\": { \"laravel-vue-pagination\": \"^2.3.1\" } هذا الاصدار متوافق مع VueJS 2