iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
佛心分享-IT 人自學之術

後端小白自學 Laravel系列 第 30

第 30 天:總結與學習資源

  • 分享至 

  • xImage
  •  

復習所學內容和知識點


Laravel 基礎結構 MVC 架構 (Models-Views-Controllers)

回顧:第 24 天:項目重構與優化

  • 模型 Models

    • 模型代表數據結構,通常對應於資料庫中的表,Eloquent ORM 使得與資料庫交互變得簡單。
    • 通常放在 app/Models 目錄中。
  • 視圖 Views

    • 視圖是用戶界面的部分,通常使用 Blade 模板引擎來編寫,並存放在 resources/views 目錄中。
    • 可以使用 Blade 提供的語法來簡化 HTML 代碼,其實也可以用前端框架或是原生寫法取代傳統的 Blade 視圖來實現前後端分離。
  • 控制器 Controllers

    • 控制器負責處理請求和返回回應,通常放在 app/Http/Controllers 目錄中。
    • 控制器可以組織不同的業務邏輯,減少路由文件的複雜性。
app/
  ├── Console/           # Artisan 命令
  ├── Exceptions/        # 自定義例外處理
  ├── Http/
  │   ├── Controllers/   # 控制器
  │   ├── Middleware/    # 中介層
  │   └── Requests/      # 請求驗證
  ├── Models/            # Eloquent 模型
bootstrap/
  ├── app.php            # 框架啟動腳本
config/                  # 配置文件
database/
  ├── factories/         # 模型工廠
  ├── migrations/        # 數據庫遷移
  └── seeders/           # 數據填充
public/                  # 公共資源(如 CSS、JavaScript)
resources/
  ├── lang/              # 語言文件
  ├── views/             # Blade 模板
  └── sass/              # SCSS 文件
routes/                  # 路由定義
storage/                 # 日誌和上傳文件
tests/                   # 測試文件
vendor/                  # Composer 依賴包

路由和控制器

回顧:第 3 天:路由基礎第 4 天:控制器

使用 RESTful 路由來組織應用的 URL 結構。
當然也可以用資源控制器的方法,指令 php artisan make:controller {TodoController} --resource Laravel 資源路由就會使用一行程式碼將典型的建立、讀取、更新和刪除 CRUD 路由分配給控制器。

數據庫操作

回顧:第 5 天:數據模型與遷移第 6 天:數據庫操作基礎

通過使用 Eloquent ORM,進行資料庫的 CRUD 操作,當然個人覺得最複雜的地方也是這段,因為還有 model 的關聯 relationships!

視圖與模板

參考文章:30天 JavaScript 提升計畫:從零到精通結合2024年的創新功能 - 第 26 天:安全最佳實踐
回顧:第 13 天:前端 Vue3 搭配後端 Laravel 9.x

使用 Blade 模板引擎渲染視圖,理解視圖的組織結構和數據傳遞,這裡是我一開始學後端的時候認識路由的地方,一路上覺得這裡的重點是用 @csrf 來保護表單。
當然,依照現在的專案主要是前後端分離,所以可以用前端框架或是原生寫法取代傳統的 Blade 視圖來實現前後端分離。

🐘 補充說明:
@csrf 用於生成一個 CSRF 保護令牌,防止跨站請求偽造。

表單和驗證

回顧:第 9 天:表單處理與請求第 18 天:驗證與自定義規則

創建表單並進行表單驗證,或是使用 Laravel 的 獨立驗證 Validator::make() 驗證功能來處理用戶輸入。
當使用者成功創建、更新或刪除待辦事項後,也可以使用 redirect()->route('todos.index')->with('success', '...'); 來向用戶顯示成功消息。

中介層和安全性

回顧:第 11 天:用戶認證第 12 天:用戶授權第 15 天:中間件

中介層用於過濾請求進入應用程序。例如,可以用於身份驗證或日誌記錄。
中介層放在 app/Http/Middleware

API 開發

回顧:第 14 天:RESTful API 基礎第 22 天:前後端交互 - API 開發與集成

建立 RESTful API。
使用 JSON 輸出數據,並理解 API 的認證機制。

測試和除錯

回顧:第 23 天:代碼質量與測試

學會編寫單元測試和功能測試。
使用 Laravel 的日誌系統進行除錯。

完成最終項目的整合和優化


之前的任務管理系統也是標準的 CRUD 範例,今天寫一個每次學新語言或框架都會練習的 To_do List!

創建數據表和模型
運用指令 php artisan make:model Todo -m

public function up()
{
    Schema::create('todos', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->boolean('completed')->default(false);
        $table->timestamps();
    });
}

編輯控制器

namespace App\Http\Controllers;

use App\Models\Todo;
use Illuminate\Http\Request;

class TodoController extends Controller
{
    public function index()
    {
        return Todo::all();
    }

    public function store(Request $request)
    {
        $todo = Todo::create($request->all());
        return response()->json($todo, 201);
    }

    public function update(Request $request, Todo $todo)
    {
        $todo->update($request->all());
        return response()->json($todo, 200);
    }

    public function destroy(Todo $todo)
    {
        $todo->delete();
        return response()->json(null, 204);
    }
}

編輯 routes/api.php 設置 API 路由

use App\Http\Controllers\TodoController;

Route::resource('todos', TodoController::class);

推薦的學習資源


官方文檔:laravel
中文文件:Laravel 5.8 入門講義laravel
學習資源:PHP 教程SQL 教程


上一篇
第 29 天:部署與環境管理
系列文
後端小白自學 Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言