首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Laravel 核心入門:路由、控制器、視圖三大支柱實戰指南

     編輯:PHP 相關知識

Laravel MVC 架構快速上手

Laravel 以優雅語法實踐 MVC,核心三元素:路由(HTTP 入口)、控制器(業務邏輯)、視圖(呈現層)。本文以最小範例串起完整流程。

1. 基礎路由定義 (routes/web.php)

<?php
use Illuminate\Support\Facades\Route;

// 根路徑 GET 請求 → 閉包直接回傳
Route::get('/', function () {
    return 'Hello World ' . url('index');
});

// POST 請求範例
Route::post('/post', function () {
    return '測試 POST';
});

// 參數綁定:{id} 自動對應閉包參數 $id
Route::get('/user/{id}', function ($id) {
    return '用戶 ' . $id;
});

// 指向控制器動作:命名空間\類別@方法
Route::get('/index', 'Index\IndexController@index');

// 路由群組套用中介層(web 群組含 Session、CSRF 等)
Route::group(['middleware' => ['web']], function () {
    // 這裡的路由自動擁有 Session、CSRF 保護
});

關鍵點:

  • Laravel 5.3+ 路由檔位於 routes/web.php(Web 介面)與 routes/api.php(API)。
  • 參數名不含 $,直接寫在大括號 {id}。
  • 控制器寫法 命名空間\類別@方法,命名空間相對 App\Http\Controllers。

2. 控制器建立與命名空間

位置:app/Http/Controllers/Index/IndexController.php

<?php
namespace App\Http\Controllers\Index;

use App\Http\Controllers\Controller; // 繼承基底控制器

class IndexController extends Controller {
    public function index() {
        $data = ['title' => 'Index 控制器'];
        // view(視圖路徑, 資料陣列) — 點號分隔目錄
        return view('index.index', $data);
    }
}

規範:

  • 類別名 StudlyCase + Controller 後綴。
  • 方法名 camelCase。
  • 繼承 Controller 獲得 view()、redirect()、response() 等助手。

3. 視圖模板 (resources/views/index/index.php)

<body>
<div class="container">
    <div class="content">
        <div class="title"><?php echo $title; ?></div>
    </div>
</div>
</body>

Blade 模板引擎(推薦):副檔名 .blade.php,語法更優雅:

{{-- resources/views/index/index.blade.php --}}
<div class="title">{{ $title }}</div>
{{-- 自動 HTML 轉義,防 XSS --}}

4. 完整請求生命週期圖解

  1. 瀏覽器發送 GET /index
  2. public/index.php 啟動框架
  3. 路由匹配 Route::get('/index', 'Index\IndexController@index')
  4. 實例化 IndexController、呼叫 index()
  5. 控制器準備資料、呼叫 view('index.index', $data)
  6. 視圖引擎編譯 resources/views/index/index.blade.php → PHP 程式碼
  7. 輸出 HTML 回應給瀏覽器

5. 進階路由技巧

路由參數正則限制

Route::get('/user/{id}', 'UserController@show')
    ->where('id', '[0-9]+'); // 僅匹配數字

資源控制器(RESTful 一鍵生成)

Route::resource('posts', 'PostController');
// 自動對應:
// GET    /posts          → index
// GET    /posts/create   → create
// POST   /posts          → store
// GET    /posts/{post}   → show
// GET    /posts/{post}/edit → edit
// PUT    /posts/{post}   → update
// DELETE /posts/{post}   → destroy

命名路由(方便生成 URL)

Route::get('/profile', 'UserController@profile')->name('profile');
// 視圖/控制器中生成 URL:
route('profile');           // https://domain/profile
route('profile', ['id' => 1]); // 參數化

6. 視圖進階:佈局繼承與元件

{{-- resources/views/layouts/app.blade.php --}}
<html>
<body>
    @yield('content')
</body>
</html>

{{-- resources/views/index/index.blade.php --}}
@extends('layouts.app')
@section('content')
    <h1>{{ $title }}</h1>
@endsection

7. 常見新手誤區

誤區正確做法
路由檔寫邏輯判斷路由只負責分派,邏輯移至控制器/服務類
控制器直接操作 DB使用 Eloquent 模型或 Repository 模式
視圖用 改用 Blade {{ }} 自動轉義
命名空間寫錯導致 Class not found類別實際路徑必須與 namespace 對應,執行 composer dump-autoload

結語

掌握「路由→控制器→視圖」鐵三角,即可建立清晰可維護的 Laravel 應用。後續可深入:表單驗證、Eloquent ORM、中介層、授權策略、API 資源、測試、佇列等進階主題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved