Laravel + Element 超簡單實現分頁效果案例教程

2021-01-11 飛飛編程

在Web應用開發中,前端常常要展示數據列表,數據較多時就要對查詢結果進行分頁,只顯示當前頁的數據,一方面不會造成數據列表過長,另一方面減少每次查詢和返回的數據量。Laravel 中實現數據分頁非常簡單,使用 Element-UI 完成分頁數據的前端展示同樣非常簡單。

一、Laravel 分頁

1、在其他框架中,分頁操作可能比較複雜。Laravel 不管使用資料庫查詢構造器 或者 Eloquent ORM ,都可以非常方便、易用的完成資料庫查詢結果集分頁操作。

數據分頁至少需要兩個參數:一是每頁多少條數據,二是當前顯示第幾頁。Laravel 數據分頁有多種方法,最簡單的是使用 paginate 方法。默認情況下,HTTP 請求中的 page 查詢參數值被當作當前頁的頁碼。 Laravel 會自動檢測該值,並自動將其插入到分頁器生成的連結中。

2、以查詢 User 模型數據為例,先創建路由。

Route::middleware('auth:api')->prefix('v1')->group(function() { Route::apiResource('users', 'UserController');}

這樣定義之後在以 get 方法請求 api/v1/users 路徑時,默認情況下是控制器 UserController 的 index 方法。

3、在 UserController.php 文件中定義 index 方法:

public function index(Request $request)

{

//分頁, 參數size是每頁查詢多少條數據,另一個參數 page 會自動檢測

$pageSize = $request->query('size');

$result = User::paginate($pageSize);

return $this->success($result);

}

page 是默認參數,會自動檢測,所以這裡只出現了一個自定義參數 size,表示每頁查詢的數據條數。在 Laravel 中 get 請求參數可以用 query 方法接收。success 是自定義的一個方法,用於定義並轉化要返回的 json 格式數據。

4、返回結果示例,其中 size 為 3,page 為 2。返回數據除了 data ,還有兩個重要參數:一是當前頁 current_page,也就是 URL 參數中的 page,另一個是 total,表示 User 表中所有數據的總數。有了 total 、size、current_page 三個參數,就可以推斷出其它參數,所以返回數據中給出的上一頁、下一頁、最後一頁的值及 URL 在後續的程序中並不會使用。

請求地址: http://zhangschool.test/api/v1/users?size=3&page=2

二、vue-element-admin 前端框架

1、Element-UI 是基於 Vue 2.0 的桌面端組件庫,內置有 Pagination 分頁組件。vue-element-admin 是一個後臺前端解決方案,它基於 vue 和 element-ui 實現,vue-admin-template 是其簡化版。本示例使用 vue-admin-template ,完成基礎框架的構建。

2、在 router/index.js 文件中先添加路徑。

{

path: 'user',

name: 'User',

component: () => import('@/views/user/index'),

meta: { title: '用戶管理', icon: 'table' }

},

3、在 views/user 目錄下創建文件 index.vue,用 el-table 組件顯示數據。示例代碼:

4、接著,採用 el-pagination 分頁組件,繼續編輯 index.vue 文件,其中屬性 page-size 是每頁請求多少條數據,total 是指一共有多少數據。另外還有四個事件分別綁定了四個函數,分別在切換當前頁、改變請求條數(即 page-size 值)、點擊上一頁、點擊下一頁時觸發。

5、在 api 目錄下,新建 user.js 文件並編輯,示例代碼:

import request from '@/utils/request'

export function userIndex(pageSize, currentPage) {

return request({

url: '/users?size=' + pageSize + '&page=' + currentPage,

method: 'get'

})

}

其中 request 是 vue-admin-template 框架中向後端發起請求的文件,封裝的發起請求的 http 客戶端是 axios 。最終請求的 url 示例:

http://zhangschool.test/api/v1/users?size=3&page=2

6、user/index.vue 文件中 script 部分代碼如下:

引入request.js 中定義的方法 userIndex()

data 數據的5個屬性, loading 表示數據加載中、tableData 是表格數據, total 是所有數據總條數,total 要給定個默認值,不能為空。currentPage 是當前頁碼,默認值就是第1頁,即在 URL 中 page=1。pageSize 是每頁獲取多少條數據,默認值和 el-pagination 組件 page-sizes 數組第一個元素的值相同。

在 mounted 中調用 getUserIndex() 函數,即在 vue 完成頁面模版渲染後即向後臺請求數據。

定義 getUserIndex() 函數,向後端發起請求,請求成功之後,按前述返回結果中的 json 數據結構,給 data 中定義的屬性賦值,表格中數據就正常顯示了。

切換當前頁等四個事件所綁定的函數都會接收一個參數 $var,這個參數就是當前事件的值。 這就好辦了,用這個新的 $var 的值改變 data 中相應的屬性值,再調用 getUserIndex() 函數重新向後臺請求數據。

三、最終完成結果

(切換到 5條/頁並且切換到第2頁)

本案例採用 Laravel 6.X ,vue-admin-template 4.1.0,element-ui 2.7.2,很容易就完成了後端數據分頁和前端的數據列表分頁展示。

---end---

相關焦點

  • 封裝element-ui表格,我是這樣做的
    使用過element-ui的表格的同學應該都有這樣的體會,做一個簡單的表格還比較容易,但如果這個表格包含了頂部的按鈕,還有分頁,甚至再包含了行編輯,那開發工作量就成倍的增加,特別是在開發管理系統的時候,表格一個接一個的去開發, 即浪費時間,還對個人沒有什麼提升。今天小編帶來了自己封裝的一個表格,讓你用JSON就可以簡單的生成表格。
  • 本篇將介紹的是word分頁的幾種常用方法,感興趣...
    本篇將介紹的是word分頁的幾種常用方法,感興趣的朋友可以了解一下!word是一款文檔編輯工具,用的非常廣泛,不管是學習還是工作,都有它的身影。它的一些常用操作我們必須了解,不然在使用的時候可能浪費很多時間。今天要介紹的就是word中一個很常用簡單的操作,就是word分頁,是不是簡單的不能再簡單了。
  • Elementor教程-初識elementor-神奇的WordPress頁面生成器
    Elementor這是一款可以通過拖拽、點擊就可以完成wordpress站點設計的插件,同類似的插件也很多,比如Divi,Visual Composer,WPBeaverbuilder,Fusion Builder這些,每個我都嘗試過,也購買過付費的版本,最終還是覺得elementor,用起來比較順手,因為該產品是老外的,所以一直沒有比較好的中文教程
  • Vue 3下element-ui用不了怎麼辦,element-plus來幫你
    element-plus你可以理解為是element-ui支持Vue 3的版本,element-plus是一套支持Vue 3.0的組件庫,提供的組件涵蓋了絕大部分頁面UI的需求。在Vue 3的腳手架項目中,首先安裝element-plus的npm包,命令如下所示:npm install element-plus -S編輯main.js,引入整個element-plus組件和所需的樣式,由於element-plus組件內部默認使用英語,而我們項目需要使用中文
  • 《AE Particular粒子特效高級案例教程》
    大家好,我是小莫,這是新的AE付費教程:《Trapcode Particular》系列教程第二部 01、教程介紹『你將學到什麼』《AE Particular粒子特效高級案例教程》一共有22集,一共有三個高級案例。你將從中學到粒子綜合屬性的應用,粒子可以實現的高級效果等。
  • PS教程:製作透視物體的鏡面倒影效果,簡單實用
    (每期的圖文教程都有相關視頻教程,圖文結合視頻,學習效果更好哦)鏡面倒影效果常常用於商品宣傳圖中,鏡面倒影效果可以讓我們產品展示更加立體更加真實。如果僅僅是製作正面商品的鏡面倒影是簡單的,直接複製,垂直翻轉再拉個漸變就行了,但是有多個面的,具有透視關係的商品怎麼做鏡面倒影效果呢,複製翻轉後,它的銜接的部分可是不貼合的啊?
  • Word中特殊段落設置與分頁分節教程
    三、實戰:雙行合一雙行合一是Word的一個特色功能,通過該功能,可以輕鬆地製作出兩行合併成一行的效果。四、實戰:合併字符合併字符是指將多個字符以兩行的形式顯示在文檔中的一行中,且只佔用一個字符的位置。六、設置分頁與分節編排格式較複雜的Word文檔時,分頁、分節是兩個必不可少的功能。七、實戰:為季度工作總結設置分頁通過插入分頁符進行強制分頁,輕鬆解決問題分頁中遇到問題。
  • PS教程——實現丁達爾光照效果
    #PS教程前幾天有粉絲私信我說之前的教程沒給原圖,自己找其它圖做不出來相同的效果。這裡說一下,因為不同的照片色彩,光線等原因相同的操作效果可能效果也不盡相同。今後我會給原圖,供大家練習使用。上原圖導入原圖,複製圖層,在新圖層上執行濾鏡-模糊-徑向模糊。將中心位置調整為太陽的位置。
  • Word怎麼添加及取消分頁
    word中怎麼分頁?Word2007 插入--分頁Word2003 插入--分隔符Ctrl+enter設置分頁?你想怎麼分?你設置好頁面的各項值,系統根據你的實際使用情況,默認的是自動分頁的!一、調整Word自動分頁時的屬性儘管Word會根據頁面大小及有關段落的設置自動對文檔進行分頁,但我們仍然可以對Word自動分頁時的有關禁忌規則進行適當的修改,以達到控制Word的自動分頁狀態的目的。調整Word自動分頁屬性的步驟為:1、選定需調整分頁狀態的段落。
  • Mybatis之PageHelper分頁原理
    PageHelper分頁原理PageHelper上文說過是一個Mybatis的分頁插件,使用起來很簡單,今天就來看看它背後的原理。Page是實現Closeable接口,並且繼承了ArrayList,並且定義一些分頁用到的成員變量,比如頁碼,每頁大小,總數等。後面會說通過攔截的查詢返回的對象就是Page對象。
  • 抖音微信聊天滿屏小黃鴨動態圖片製作教程 超簡單的一看就會
    抖音微信聊天滿屏小黃鴨動態圖片製作教程 超簡單的一看就會時間:2018-10-17 19:33   來源:今日頭條   責任編輯:沫朵 川北在線核心提示:原標題:抖音微信聊天滿屏小黃鴨動態圖片製作教程 超簡單的一看就會 近日大家都被抖音微信聊天滿屏小黃鴨動態圖片刷屏了,很多小夥伴都在問抖音微信聊天滿屏小黃鴨動態圖片怎麼製作
  • 蘋果手機來電信息LED閃光燈設置教程 超簡單的一看就會
    蘋果手機來電信息LED閃光燈設置教程 超簡單的一看就會時間:2018-10-20 16:13   來源:今日頭條   責任編輯:沫朵 川北在線核心提示:原標題:蘋果手機來電信息LED閃光燈設置教程 超簡單的一看就會 很多人都有看到別人的蘋果手機當有簡訊或者是電話進入的時候,手機會亮起來,有朋友覺得比較的酷,所以也想試試打開來電閃光燈的樣子
  • Axure RP 教程:跑馬燈+購物車
    本篇文章將會教大家利用AxureRP8,實現跑馬燈+購物車的效果,enjoy~前言本案例是目前筆者唯一一個使用AxureRP8製作的教程,說來奇怪,可能是因為AxureRP9處於測試版,還存在一定的bug,跑馬燈的效果怎麼都做不出來,於是本案例就是用AxureRP8
  • 頑固的小黑點與word分頁設置選項
    當對段落勾選了「與下段同頁」、「段中不分頁」或「段前分頁」選項時,段落最左側就會出現小黑點。如下圖所示。有時候應用了某些內置的樣式,比如標題2等,由於該樣式中默認勾選了這些分頁設置,這時也會出現小黑點。
  • Photoshop教程:簡單幾步製作木刻的效果
    也可以修改紫色區域的縮放和凸顯以及光照,使圖片達到一個最好的效果。第五步:這樣作品就完成了,利用剪裁工具製作完美效果。今天的PS教程就到這裡了,感謝大家的支持,我們將繼續更新更多的PS教程,讓你們從一個PS小白變成精英。
  • Photoshop快速打造鏡面切割效果教程
    正在閱讀:Photoshop快速打造鏡面切割效果教程Photoshop快速打造鏡面切割效果教程2007-11-19 09:21出處:作者:肥魚>更多精彩平面及網站設計圖文教程、視頻教程,盡在PConline創意設計欄目。   本文由中國教程網 肥魚 原創,轉載請保留此信息!
  • 工程測量人員入門:15套超詳細教程講解,讓你成為合格的測量人員
    建築工程測量的工作是很繁瑣的,首先需要有紮實的基礎,沒有理論基礎就不能正確地分析問題,解決問題,今天整理了15套超全教程,帶你掌握測量技巧和各種儀器的使用方法,還有很多實地案例操作動畫供大家學習,讓你一步一步蛻變成合格的測量技術人員。
  • Yeti粒子教程-C4D教程X-paiticular粒子教程粒子教程
    本AE教程是由FutureVFX CG資源網整理的Yeti粒子教程-C4D教程X-paiticular粒子教程粒子教程附部分源文件。這是一套必學的超高質量 X-paiticular 粒子實戰案例教程還包含部分 TFD Realflow 案例講解部分運動圖形+動力學講解本套教程中講解了大量使用的XP粒子效果 實戰性非常之高效果包含:編織 Logo粒子演繹 Xp-TFD 火焰等等等等 都是 實戰案例教程主要講解XP案例使用方法 並不過多講解渲染方面(如果想學渲染的同學不建議購買
  • 教程| 自動化機器學習第一步:使用Hyperopt自動選擇超參數
    代碼地址:https://github.com/Rachnog/Deep-Trading/tree/master/hyperparameters超參數搜索卷積神經網絡訓練的典型超參數的列表在開始訓練一個模型之前,每個機器學習案例都要選擇大量參數;而在使用深度學習時,參數的數量還會指數式增長。
  • Element-ui簡單使用方法
    下載安裝npm install vue #安裝Vuenpm i element-ui -S #安裝Element-ui圖標,el內置了許多圖標,使用icon="iconname"