喜歡就 點贊+收藏,因為可以給我動力,謝謝!
PS:順便問一句,該不該等 Laravel 7 From Scratch 還是先搞完這個,糾結中……
不定期原文更新,不會頻繁發博文刷屏,所以感興趣的經常回來看看。有好的建議可以留言。
Laravel X From Scratch 是 Laracasts 的保留節目,這個系列從基礎開始,一步一步的教你如何用對應版本的 Laravel 建立基礎的 web 應用。剛開始都是基礎的概念,然後一步步介紹一些更加高階的概念。一旦看完這個系列,基本上對整個 Laravel 提供的工具都會有一個瞭解了!新手必看。別忘了點贊+收藏!
第一部分:前期準備
1. 初窺 —— (B站影片地址)
在開始 Laravel 之前,我們先概略的瞭解一下一個請求發生時,到底在程式內部是如何運作的。
2. 安裝 PHP, MySQL 和 Composer —— (B站影片地址)
開始之前,我們必須確保安裝了合適版本的 PHP、 MySQL,當然還有 Composer。
3. Laravel Installer 安裝器 —— (B站影片地址)
現在我們配置好了 Composer, 我們可以安裝 Laravel Installer 並且配置成全域性可用。這就可以讓我們僅用一行命令就完成 Laravel 的安裝:Laravel new app
。
4. Laravel Valet Setup —— (B站影片地址)
如果你是 Mac 使用者就不必執行 php artisan serve
,你可以試試 Laravel Valet。
第二部分 路由
5.基礎路由和檢視 —— (B 站影片地址)
當我學習一個新框架的時候,我做的第一件事就是看看框架的預設頁面時如何工作的。本課就一起看看 routes/web.php
。
6.傳遞 Request 資料到檢視 —— (B站影片地址)
request()
幫助函式可以用來從任何 GET
或者 POST
請求中獲取資料。本課,我們來學一學如何從查詢語句中獲取資料,然後傳遞給檢視,並且也學會如何防止 XXS 攻擊。
7.路由萬用字元 —— (B站影片地址)
通常,我們會希望路由器能夠接受一個萬用字元。比如,當我們訪問一篇特定文章時,我們就可以把文章 URI 中獨特的部分把萬用字元替換掉。
8.路由到控制器 —— (B站影片地址)
如果我們可以用一個閉包來處理任何路由邏輯是很不錯的,但是,對於一定規模的專案來說,我們幾乎一定會用一個專門的控制器來替換閉包的做法。讓我們看看如何實現吧!
第三部分 資料庫操作
9.設定資料庫連線 —— (B站影片地址)
目前為止,我們使用了一個簡單的陣列作為我們的資料來源。這不是現實中的情況,讓我們來看看如何設定一個資料庫連線吧。在本課,我們討論了環境變數,配置檔案以及查詢語句生成器。
10.Eloquent介紹 —— (B站影片地址)
前一課,我們使用了查詢語句生成器從資料庫獲取了相關的文章。但是,我們還有一個方案可以選擇:Eloquent。
Eloquent 不僅是一個提供了同樣方法但是更加簡潔的介面,用於查詢資料庫的類,同時它也是一個儲存相關業務邏輯的絕佳之處。
11.遷移 —— (B站影片地址)
前課,我們手動建立了一個資料庫表,這並沒有反映出我們現實中的日常工作流。實際上我們都是用遷移檔案實現的。本節課我們就一起來看一下它們。
12.在一行命令中建立多個檔案 —— (B站影片地址)
如果我們需要建立多個檔案,如果每次都打一行命令,顯得十分繁瑣,實際上我們可以透過簡單的一行命令加上合適的選項就可以一次性建立所有你需要的檔案,試試看吧!
13.業務邏輯 —— (B站影片地址)
只要有可能,你就應該使你的程式碼書寫和表現方式真實反映出你所期待的行為,並且和你真實生活中口中說的保持一致。比如,如果你是學校裡的,需要有一個方式來幫助學生完成任務,那就把這些詞彙運用到你的程式碼中去。也許你可以有一個 Assignment
模型,並且包含一個 complete()
方法。
第四部分 檢視
14.佈局頁面 ——(B站影片地址)
如果你再看一下 Laravel 提供的 welcome
檢視,它包含了所有的 HTML 結構。這對於一個示例頁面是沒問題的,但是我們的實際開發中一定需要使用佈局頁面。
15.完善站點模板 —— (B站影片地址)
運用前幾節課學到的技術,我們來下載一個站點模板,然後把它加到 Laravel 專案中,這個模板叫做 SimpleWork 。
16.設定一個可以高亮的選單連結 —— (B站影片地址)
本課,我們會學習如何檢測並高亮當前頁面的導航按鈕。我們可以使用 Request
facade 來實現。
17.透過 Laravel Mix 和 webpack 進行資源編譯 —— (B站影片地址)
Laravel 提供了 Mix (一個關於 webpack 的操作工具)來幫助我們管理資源的匹配和編譯。本課,我們演示一個基本的前端工作流程。
18.動態載入資料(1) —— (B站影片地址)
接下來我們來看如何動態的載入資料。在 about
頁面,我們有一個文章列表。我們一起建立一個文章模型,然後加入一些簡單的資料,最後動態的把它們載入到頁面上。
19.動態載入資料(2)—— (B站影片地址)
我們繼續完成這個練習,我們再建立要給顯示完整文章的專門頁面。
20.家庭作業解答 —— (B站影片地址)
我們看一下上一課最後留的作業如何做。為了顯示一個文章列表,我們需要建立一個對應的路由,一個對應的控制器方法,並且檢視中要對它們進行迭代和渲染展示。
第五部分 表單
21.七個 Restful 控制器方法 —— (B站影片地址)
我們應該對 7 個 Restful 控制器方法熟悉。本課,我們就一起來看看。
22. Restful 路由 —— (B站影片地址)
熟悉了 Restful 控制器,接下來就要熟悉 RESTful 路由了。
23.表單處理 —— (B站影片地址)
理解了 Restful 控制器方法和 HTTP 請求型別之後,是時候一起編寫一個提交新文章的表單了。
24.提交 PUT 請求的表單 —— (B站影片地址)
瀏覽器,在現在,還是隻認識 GET
和 POST
請求。所以我們只能透過提交一個隱藏的欄位來額外的指明我們所需要使用的方法,以便於 Laravel 去正確的對應到相應的路由。一起來看一下吧!
25.表單驗證基礎 —— (B站影片地址)
在我們進一步去重構控制器之前,我們還要看看錶單資料驗證。目前,我們的控制器並不使用者輸入的到底是什麼內容,我都直接把它們賦值然後檢視儲存到資料庫中。這是絕對不行的。所以我們必須謹慎對待使用者輸入,一定要進行必要的驗證。
第六部分 控制器技巧
26.利用路由模型繫結 —— (B站影片地址)
目前為止,我們手動獲取資料庫的資料,並且使用了路由的萬用字元。然而,Laravel 可以自動實現這個資料查詢,感謝路由模型繫結。
27.減少重複 —— (B站影片地址)
我們的下一個技巧就是減少重複。如果我們回看 ArticlesController
我們在多個地方引用了 request keys 。實際上我們有一個更簡單的方法。
28.考慮給路由一個名稱 —— (B站影片地址)
給路由命名讓你可以將 URI 變成一個變數。這樣,一旦路由改變了,所有的連結都會自動更新,因為你只是引用了路由的名稱而不是硬編碼它們。
第七部分 Eloquent
29.基礎 Eloquent 關係 —— (B站影片地址)
讓我們回到 Eloquent 來談談關係。比如,如果我們有一個 $user
例項,我們如何獲取他建立的所有專案呢?或者反過來,我們有一個 $project
例項,我們如何獲取建立它的使用者呢?
另外有專門的一系列影片講 Eloquent Relationships.
30.理解外來鍵和資料庫工廠 —— (B站影片地址)
讓我們再談談測試。如果一個文章和一個使用者關聯,那麼我們就需要給它新增必要的外來鍵和關係方法。為此,我們也快速回顧了資料庫工廠和如何在開發和測試階段使用它們。
31.多對多關係 —— (B站影片地址)
下面,我們會來講講更加複雜的“多對多關係”。為了講解這個概念,我們會使用常見的文章和標籤作為案例。很快我們就意識到,我們需要第三張資料表來關聯一篇文章和多個標籤,以及一個標籤和多個文章。
32.把所有標籤顯示在每篇文章下 —— (B站影片地址)
現在我們學會了如何構建多對多的關係,我們可以最終透過檢視來進行使用了。並且最終,我們可以透過標籤來篩選文章了。
33.多對多關係的新增和驗證 —— (B站影片地址)
我們現在理解了如何從一個被連線的資料表中獲取和顯示記錄。下面我們就開始演示如何透過 attach()
和 detach()
方法來一次插入一個或多個記錄。但是,我們也要進行必要的驗證,以避免惡意使用者插入非法值。
第八部分 授權
34.快速建立訪問限制體系 —— (B站影片地址)
感謝 laravel-UI,我們可以快速建立對註冊、session 處理、密碼重置、郵件確認等等的完整訪問限制體系。最棒的是,你根本無需關心實現細節,並且只需要幾分鐘就可以建立起來。
35.密碼重置流程 —— (B站影片地址)
本課,我們會討論基礎的密碼重置流程。如果一個使用者忘記了密碼,一系列的事情會發生,他們會提交一個請求,我們會為他們準備一個和他們的賬號關聯的唯一的 token,然後我們給他們傳送一個郵件,其中包含一個訪問網站的連結,我們驗證連結中的 token,如果它存在於資料庫中,我們就允許使用者重設密碼。幸運的是,laravel 會自動為我們實現所有這一切!
第九部分 核心概念
36.Collection —— (B站影片地址)
我們的第一個核心概念是 collection 的鏈式操作。你一定已經瞭解過了,比如從資料庫獲取多個資料的時候,一個 collection
的例項會被返回。它不僅僅是一個資料的打包,而且還提供了一系列十分便利的方法可以讓我們輕鬆對它們進行操作。
37.CSRF 攻擊和舉例 —— (B站影片地址)
Laravel 提供了跨站請求攻擊(CSRF)的保護機制,不過我們仍然需要理解到底這是什麼意思。本課,我會給大家看一些案例,一個 CSRF 攻擊是如何執行的,並且 Laravel 是如何給我們提供保護的。
38.服務容器基礎 —— (B站影片地址)
Laravel 的服務容器是它整個框架的核心支柱之一。在我們檢視框架實際的服務容器之前,我們先自己寫一個簡單的服務容器出來。這會讓我們對服務的繫結和解析有更直觀的理解。
39.自動解析依賴 —— (B站影片地址)
現在我們理解了服務容器的基礎,我們來看看 Laravel 的實現吧。當我們深入檢視時,拋開基礎,它甚至可以自動實現物件的構建。這意味著,我們可以直接“索取”你想要的物件,而 Laravel 會盡力的幫你透過 PHP 的反射 API 來讀取依賴關係然後把你需要的提供給你。
40.Laravel Facades 解釋 —— (B站影片地址)
現在我們對服務容器有了一個基本的理解了,我們可以來談談 Laravel facades 了,它為框架所有底層元件提供了一個方便的靜態介面。本課,我們會一起看看它基礎的結構,如何找到底層的類,以及什麼時候我們會選擇不去使用 facedes。
41.服務提供者 —— (B站影片地址)
我們花了兩節課時間討論了 Laravel 的服務容器和 facades。基於這些內容,我們講服務提供者就容易多了。一個服務提供者是用來註冊服務到容器的地方,並且一般用來配置你的程式。
第十部分 郵件
42.傳送原生郵件 —— (B站影片地址)
在 Laravel 中傳送郵件最簡單的方法是 Mail::raw()
方法。本課,我們會學習如何提交一個表單,然後從請求中讀取郵件,最後傳送一個郵件給使用者。
43.用 Mailtrap 模擬一個收件箱 —— (B站影片地址)
在開發模式下用 log 來檢視郵件是很方便的,但是讓我們來切換到 Mailtrap 。這讓我們可以模擬真實情況下的郵箱收件箱,這在我們開始傳送 HTML 郵件的時候特別有用。
44.使用 Mailable 類傳送 HTML 郵件 —— (B站影片地址)
目前為止,我們只傳送了純文字郵件。讓我們開始傳送 HTML 文字的郵件吧!我們使用的是 Laravel 的 mailable 類。
45.使用 Markdown 模板傳送郵件 —— (B站影片地址)
我們也可以透過 makedown 語法來寫郵件。本課,我們可以學會如何透過框架來傳送格式良好的郵件。如果我們需要調整 HTML 的格式和樣式,我們也可以把 mailable 類的資源釋出出來進行自定義修改。
46.Notifications 還是 Mailables —— (B站影片地址)
目前為止,我們只講了 Mailable
類的郵件傳送,然而,我們還有一個方法可以考慮。就是 Notification
類,它可以被用來通知使用者,在使用者在網站上做了某些行為之後。不同之處在於使用者最終如何被通知到。當然,我們還是可以透過郵件提醒,但是我們也可以透過文字訊息,Slack 提醒,甚至郵寄一個實體卡片!
第十一部分 通知
47.資料庫通知 —— (B站影片地址)
一個通知可以透過任意數量的渠道傳送,也許一個特別的通知可以透過使用者郵箱,或者網站提示來傳送。我們在本課一起來看看吧!
48.只要5分鐘,傳送 SMS 通知 —— (B站影片地址)
這是一個輕鬆的練習。我們會選擇我本人從未嘗試過的一種通知方法,SMS 訊息。你們會看到,即使我從無經驗,要實現 SMS 訊息的傳送也是十分的容易,當然你們也可以做到。
第十二部份 事件
49.事件的優點和缺點 —— (B站影片地址)
事件為你的應用中的某些部分提供了一個傳送公告的能力,它能夠遍及整個系統。本課,我們不僅會看看事件的重要功能,也會討論它的優缺點,幫助你自己決定是否採用事件功能。
第十三部份 授權
50.僅限授權使用者訪問 —— (B站影片地址)
對於一個典型的網路應用,某些行為必須限定給授權使用者。比如只有討論的釋出者可以選擇哪個回答是最佳答案。如果是這個情形,我們就必須編寫必要的授權邏輯。我們將在本課討論。
51.授權過濾 —— (B站影片地址)
幾乎不可避免的,你的應用中的某些使用者會獲得某些特權和訪問權。比如,一個論壇版主或者網站站長。這種情況下,我們可以分別使用 before
和 after
的授權過濾,在意向策略被測試之前。
52.猜測能力的名稱 —— (B站影片地址)
這是一個可選的特性,你可能會用到。如果你從控制器授權時排除了能力的名稱, Laravel 會盡力猜測去呼叫合適的策略。它是透過建立一個特定的 restful 控制器方法和相關策略方法的對映來實現的。
53.以中介軟體實現的授權 —— (B站影片地址)
如果你不想在控制器方法中去實現授權策略,你也可以採用路由特定中介軟體來實現。本課我們就來一起學習。
54.角色和能力 —— (B站影片地址)
我們再加深一些印象。從一個全新的 laravel 應用開始,我們建立一個基於角色的授權系統,這樣我們可以動態的給每一個使用者授予或者收會特權。
原始碼地址:GitHub。
本作品採用《CC 協議》,轉載必須註明作者和本文連結