Bỏ qua đến nội dung chính

Laravel Livewire là gì? Cách dùng Livewire 4 qua ví dụ

Livewire giúp xây giao diện động trong Laravel bằng PHP và Blade. Bài viết giải thích cách hoạt động, cài đặt, ví dụ component Livewire 4 và khi nào nên dùng.

Tan Hien
Founder
Cập nhật 5 phút đọc
Chia sẻ:
Laravel Livewire là gì? Cách dùng Livewire 4 qua ví dụ
Nội dung bài viết
  1. 1.Livewire hoạt động như thế nào?
  2. 2.Cài đặt Livewire
  3. 3.Tạo component Livewire đầu tiên
  4. 4.Các directive Livewire hay dùng
  5. 5.Khi nào nên dùng Livewire?
  6. 5.1Kinh nghiệm từ Hozitech

Laravel Livewire là thư viện full stack cho Laravel giúp xây dựng giao diện động (form kiểm tra dữ liệu tức thì, bộ lọc, phân trang không tải lại trang) bằng PHP và Blade, không cần tự viết JavaScript cho từng tương tác. Bản hiện hành là Livewire 4, yêu cầu Laravel 10 trở lên và PHP 8.1 trở lên; component mặc định là một file duy nhất chứa cả PHP và giao diện.

Bài viết giải thích Livewire hoạt động ra sao, cách cài đặt, ví dụ component thực tế theo tài liệu Livewire 4.x (truy cập 01/10/2026), khi nào nên và không nên dùng.

Sơ đồ 4 bước Laravel Livewire hoạt động: render lần đầu, người dùng tương tác, gửi lên máy chủ, cập nhật phần HTML thay đổi
Livewire xử lý tương tác bằng PHP trên máy chủ và chỉ cập nhật phần giao diện thay đổi.

Livewire hoạt động như thế nào?

Component Livewire được render trên máy chủ thành HTML như một view Blade. Khi người dùng nhấn nút có wire:click hoặc gửi form, phần JavaScript nhỏ của Livewire gửi request lên máy chủ kèm trạng thái component. Máy chủ gọi phương thức PHP tương ứng, render lại component, và Livewire chỉ cập nhật phần HTML thay đổi trên trang.

Vì logic nằm ở PHP, bạn dùng được ngay Eloquent, validation, phân quyền của Laravel. Đổi lại, mỗi tương tác cần gọi máy chủ, nên các hiệu ứng thuần giao diện (mở menu, ẩn hiện khối) nên làm bằng Alpine.js, thư viện JavaScript nhẹ đi kèm Livewire.

Cài đặt Livewire

Trong dự án Laravel có sẵn, cài bằng Composer:

composer require livewire/livewire

Layout cần có @livewireStyles trong thẻ <head> và @livewireScripts trước thẻ đóng </body> để nạp CSS và JavaScript của Livewire. Nếu tạo dự án mới, bạn có thể chọn starter kit Livewire ngay khi chạy laravel new (xem hướng dẫn cài đặt Laravel); starter kit này dùng Livewire 4, Tailwind và Flux UI.

Tạo component Livewire đầu tiên

Lệnh make:livewire tạo component dạng một file (single-file component) trong resources/views/components, tên file có biểu tượng ⚡ ở đầu:

php artisan make:livewire post.create
# Tạo: resources/views/components/post/⚡create.blade.php

Trong file này, phần PHP là một class ẩn danh kế thừa Livewire\Component, phần dưới là giao diện. Ví dụ form tạo bài viết có kiểm tra dữ liệu:

<?php

use App\Models\Post;
use Livewire\Attributes\Validate;
use Livewire\Component;

new class extends Component {
    #[Validate('required|min:3')]
    public $title = '';

    #[Validate('required')]
    public $content = '';

    public function save()
    {
        $validated = $this->validate();

        Post::create($validated);

        $this->reset(['title', 'content']);
    }
};
?>

<form wire:submit="save">
    <input type="text" wire:model="title">
    <div>@error('title') {{ $message }} @enderror</div>

    <textarea wire:model="content"></textarea>
    <div>@error('content') {{ $message }} @enderror</div>

    <button type="submit">Lưu bài viết</button>
</form>

Nhúng component vào bất kỳ view Blade nào bằng thẻ:

<livewire:post.create />

Ngoài dạng một file (mặc định), Livewire 4 còn hỗ trợ dạng nhiều file (cờ --mfc) cho component lớn và dạng class quen thuộc từ Livewire 2, 3 (cờ --class).

Các directive Livewire hay dùng

DirectiveTác dụng
wire:modelGắn ô nhập với thuộc tính PHP. Mặc định chỉ đồng bộ lên máy chủ khi có action (ví dụ submit form), không gửi theo từng phím gõ.
wire:model.liveĐồng bộ khi người dùng gõ, có debounce mặc định 150 ms; hợp cho ô tìm kiếm, bộ lọc.
wire:model.blurChỉ đồng bộ khi người dùng rời khỏi ô nhập.
wire:clickGọi phương thức PHP khi nhấn.
wire:submitGọi phương thức khi gửi form, chặn tải lại trang.

Ví dụ ô tìm kiếm lọc danh sách khi gõ:

<input type="search" wire:model.live="search" placeholder="Tìm bài viết...">

Lưu ý từ Livewire 3: wire:model không còn cập nhật tức thì như ở Livewire 2. Nếu nâng cấp dự án cũ mà ô nhập "không phản hồi", hãy kiểm tra có cần thêm .live hay không.

Khi nào nên dùng Livewire?

Nên dùngCân nhắc giải pháp khác
Đội ngũ chủ yếu viết PHP và Blade, muốn thêm tương tác mà không dựng SPA riêng.Ứng dụng cần chạy offline hoặc tương tác dày đặc từng mili giây (trình soạn thảo, bản đồ, game).
Trang quản trị, form nhiều bước, bảng có lọc, sắp xếp, phân trang.Đã có đội frontend React/Vue: dùng Inertia hoặc API + SPA.
Website doanh nghiệp, trang thành viên cần vài khối tương tác.Cùng backend phải phục vụ cả ứng dụng di động: cần API riêng dù giao diện web dùng gì.

Livewire không làm thay các tính năng của Laravel như xác thực hay định tuyến; nó là lớp giao diện dùng lại các tính năng đó. Phần xác thực, phân quyền xem thêm bài authentication và authorization trong Laravel; mọi request của Livewire vẫn được bảo vệ chống CSRF như form thông thường (CSRF trong Laravel).

Kinh nghiệm từ Hozitech

Website Hozitech chạy trên Laravel và dùng Blade cho giao diện. Với kiểu dự án này, Livewire hợp nhất ở các khối tương tác cục bộ như form liên hệ có kiểm tra lỗi tức thì hay bộ lọc danh sách, vì không phải dựng thêm API và frontend riêng. Một lưu ý thực tế: thuộc tính public của component được gửi qua lại giữa trình duyệt và máy chủ, nên không đặt dữ liệu nhạy cảm vào đó và luôn kiểm tra quyền trong phương thức xử lý. Nếu mới bắt đầu, hãy đọc Laravel là gì trước khi học Livewire.

Tan Hien

Về tác giả

Founder

Xin chào mình là Hiền hiện đang là Founder của Hozitech. Mình là kỹ sư phần mềm có hơn 9+ năm kinh nghiệm trong lĩnh vực thiết kế website, ứng dụng di động... Gần đây mình đang nghiên cứu thêm về lĩnh vực marketing. Mình rất vui khi được chia sẽ những kiến thức và kinh nghiệm của mình đến mọi người!

Câu hỏi thường gặp

Câu hỏi thường gặp

Sẵn sàng bắt đầu dự án của bạn?

Hãy để chúng tôi giúp bạn biến ý tưởng thành hiện thực. Đăng ký tư vấn miễn phí ngay hôm nay để nhận được giải pháp công nghệ tối ưu cho doanh nghiệp.