Bắt đầu với Laravel

· 6 min read

Bắt đầu với Laravel

Laravel là một PHP framework mạnh mẽ và thanh lịch, được thiết kế để giúp việc phát triển ứng dụng web trở nên đơn giản và thú vị. Với cú pháp biểu cảm, hệ sinh thái phong phú và cộng đồng đông đảo, Laravel đã trở thành lựa chọn hàng đầu cho các dự án PHP hiện đại.

Tại sao chọn Laravel?

Trước khi bắt đầu, hãy hiểu tại sao Laravel lại phổ biến đến vậy:

  • Cú pháp thanh lịch: Code dễ đọc, dễ hiểu và dễ bảo trì
  • Eloquent ORM: Làm việc với database một cách trực quan thông qua Active Record pattern
  • Blade Template Engine: Tạo giao diện linh hoạt với cú pháp đơn giản
  • Artisan CLI: Công cụ dòng lệnh mạnh mẽ giúp tự động hóa các tác vụ
  • Migration & Seeding: Quản lý schema database như quản lý code
  • Authentication & Authorization: Xác thực người dùng được tích hợp sẵn
  • Queue & Jobs: Xử lý tác vụ nền một cách hiệu quả
  • Testing: Framework testing tích hợp sẵn

Yêu cầu hệ thống

Trước khi cài đặt Laravel, hãy đảm bảo máy của bạn có:

  • PHP >= 8.2
  • Composer (PHP package manager)
  • Một trong các database: MySQL, PostgreSQL, SQLite hoặc SQL Server
  • Node.js & NPM (cho asset compilation)

Cài đặt Laravel

Có hai cách chính để tạo dự án Laravel mới:

Cách 1: Sử dụng Composer

composer create-project laravel/laravel my-app
cd my-app
php artisan serve

Cách 2: Sử dụng Laravel Installer

composer global require laravel/installer
laravel new my-app
cd my-app
php artisan serve

Sau khi chạy lệnh php artisan serve, ứng dụng sẽ chạy tại http://localhost:8000.

Cấu trúc thư mục

Laravel có cấu trúc thư mục rõ ràng, giúp tổ chức code một cách khoa học:

  • app/ - Chứa code logic chính của ứng dụng (Models, Controllers, Services)
  • bootstrap/ - Khởi tạo framework và autoloading
  • config/ - Tất cả các file cấu hình
  • database/ - Migrations, Factories và Seeders
  • public/ - Entry point và static assets (CSS, JS, images)
  • resources/ - Views, raw assets, và language files
  • routes/ - Định nghĩa các routes (web.php, api.php)
  • storage/ - Compiled templates, sessions, logs, uploads
  • tests/ - Unit và Feature tests

Routing cơ bản

Routes định nghĩa URL nào sẽ được xử lý bởi code nào. File chính là routes/web.php:

// Route đơn giản
Route::get('/', function () {
    return view('welcome');
});

// Route với tham số
Route::get('/hello/{name}', function ($name) {
    return "Xin chào, {$name}!";
});

// Route đến Controller
Route::get('/posts', [PostController::class, 'index']);
Route::get('/posts/{post}', [PostController::class, 'show']);
Route::post('/posts', [PostController::class, 'store']);

Controller

Controllers giúp tổ chức logic xử lý request. Tạo controller bằng Artisan:

php artisan make:controller PostController
namespace App\Http\Controllers;

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

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::latest()->paginate(10);
        return view('posts.index', compact('posts'));
    }

    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }
}

Blade Template

Blade là template engine mạnh mẽ của Laravel với cú pháp ngắn gọn:

{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>@yield('title', 'My App')</title>
</head>
<body>
    <header>
        @include('partials.navigation')
    </header>
    
    <main>
        @yield('content')
    </main>
</body>
</html>
{{-- resources/views/posts/index.blade.php --}}
@extends('layouts.app')

@section('title', 'Danh sách bài viết')

@section('content')
    <h1>{{ $title }}</h1>
    
    @forelse($posts as $post)
        <article>
            <h2>{{ $post->title }}</h2>
            <p>{{ $post->excerpt }}</p>
            <a href="{{ route('posts.show', $post) }}">Đọc tiếp</a>
        </article>
    @empty
        <p>Chưa có bài viết nào.</p>
    @endforelse
    
    {{ $posts->links() }}
@endsection

Eloquent ORM cơ bản

Eloquent giúp làm việc với database thông qua các Model:

php artisan make:model Post -m
// app/Models/Post.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content', 'published_at'];
    
    protected $casts = [
        'published_at' => 'datetime',
    ];
}

Truy vấn data với Eloquent:

// Lấy tất cả
$posts = Post::all();

// Lấy với điều kiện
$posts = Post::where('published', true)->get();

// Tạo mới
$post = Post::create([
    'title' => 'Bài viết mới',
    'content' => 'Nội dung bài viết...'
]);

// Cập nhật
$post->update(['title' => 'Tiêu đề mới']);

// Xóa
$post->delete();

Bước tiếp theo

Sau khi nắm vững các khái niệm cơ bản, bạn nên tìm hiểu thêm:

  1. Middleware: Lọc và xử lý HTTP requests
  2. Validation: Kiểm tra dữ liệu đầu vào
  3. Authentication: Xác thực người dùng
  4. Queue Jobs: Xử lý tác vụ nền
  5. Testing: Viết tests để đảm bảo code chất lượng

Kết luận

Laravel cung cấp một nền tảng vững chắc để xây dựng các ứng dụng web hiện đại. Với cú pháp thanh lịch, documentation chi tiết và cộng đồng hỗ trợ nhiệt tình, bạn sẽ nhanh chóng làm quen và phát triển các dự án chuyên nghiệp. Hãy bắt đầu khám phá và tận hưởng trải nghiệm lập trình với Laravel!

Bình luận