- vừa được xem lúc

Tìm hiểu về Laravel Livewire.

0 0 38

Người đăng: Nguyen Xuan Tam

Theo Viblo Asia

Introduction

Livewire được mô tả trên https://laravel-livewire.com/. Là một full-stack framework cho ứng dụng laravel. Điều đó làm cho việc xây dựng frontend trở nên đơn giản hơn. Trong bài viết này chúng ta sẽ cùng tìm hiểu về livewire và xây dựng một livewire Laravel đơn giản. xây dựng component để chúng t xem tất cả hoạt động như thế nào và thảo luận khi nào nên sử dụng và khi nào thì không.

Setting Up

Cài laravel run cmd:

composer global require laravel/installer

Khi việc cài đặt trên hoàn tất chúng ta sẽ tạo ứng dụng learn-livewire bằng cmd sau:

laravel new learn-livewire

Sau khi việc cài đăt trên hoàn tất chúng ta sẽ di chuyển vào ứng dụng.

cd learn-livewire

Bây giờ chúng ta sẽ cài đặt livewire vào ứng dụng.

composer require livewire/livewire

Creating a Livewire Component

Livewire là một component-driven framework. Nó lấy ý tưởng từ javascript và đưa vào PHP. Component của Livewire có thể được tạo như sau:

php artisan make:livewire 

Để tạo một counter component chúng ta sẽ dùng như sau:

php artisan make:livewire counter 

Livewire sẽ tạo 2 file: Counter.php and counter.blade.php. Counter.php là một component class. Tại đây chúng ta xác định các thuộc tính bên trong trạng thái. Chế độ xem để tạo ra và các sự kiện khác sẽ diễn ra dựa trên sự tương tác của người dùng. File counter.blade.php là một view file cho Counter component và chúng được tìm thấy tại: resources/views/livewire/

The Component Class

Nội dung của Counter.php sẽ giống như sau:

<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Counter extends Component
{ public function render() { return view('livewire.counter'); }
}

render method là bắt buộc phải có trong component livewire. Ở đây chúng ta trả ra chế độ xem của view livewire.counter.

The Component View

Livewire sử dụng laravel blade để tạo khuôn mẫu cho nó. File view cần có chính xác root HTML element. view file có quyền truy cập vào tất cả thuộc tính public được định nghĩa trong class. Trong laravel chúng ta sẽ cần chính xác send thuộc tính tới view. Nhưng với Livewire điều đó được thực hiện bên ngoài với các thuộc tính public. Do đó các thuộc tính nào không xử dựng cần được xác định thuộc tính là protected hoặc private. Hãy sửa đổi tệp chế độ xem để hiển thị một số nội dung đơn giản. Cập nhật file counter.blade.php

<div> <p>Counting ... 0</p> <button>+</button> <button>-</button>
</div>

Sau khi tạo component sau khi hoàn thành nó chúng ta sẽ hiển thi nó trên trang bằng cách thêm vào như sau:

@livewire('componentName')

Laravel sẽ có một trang mặc định. welcome.blade.php. Được tìm thấy tại resources/views/. Mở nó nên và include the livewire component. Thêm phần sau vào phần nội dung của welcome.blade.php

@livewire('counter')

Run sever laravel

php artisan serve

counter component sẽ được hiển thị trên trình duyệt như sau:

Bạn đã viết thành công Livewire component đầu tiên của mình.

Making the Component Interactive

Livewire cung cấp một kỹ thuật để lắng nghe các sự kiện của trình duyệt. Sự kiện có thể được lắng nghe bằng cách thêm wire:<eventName> cho yếu tố chúng ta muốn nắng nghe.

<button wire:click="performAction">Click Me</button>

Ví dụ chúng ta muốn lắng nghe cho một sự kiệc click vào button. Hành động được thực hiện là một hàm đã được định nghĩa trong class component. Cập nhật file Counter.php


<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Counter extends Component
{ public $count = 0; public function increment() { $this->count += 1; } public function render() { return view('livewire.counter'); }
}

Chúng ta cần cập nhật view để sử dụng $count variable được tạo để call increment().

<div> <p>Counting ... {{$count}}</p> <button wire:click='increment'>+</button> <button>-</button>
</div>

Trở lại trình duyệt xem gì đã xảy ra. Vì điều đó hoạt động chúng có thể thêm chức năng giảm dần. Cũng giống như chức năng gia tăng đã được thêm vào tạo một hàm giảm dần xử lý hành động giảm dần. Cập nhật file counter.php

<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Counter extends Component
{ public $count = 0; public function increment() { $this->count += 1; } public function decrement() { $this->count -= 1; } public function render() { return view('livewire.counter'); }
} 

Cập nhật file counter.blade.php

<div> <p>Counting ... {{$count}}</p> <button wire:click='increment'>+</button> <button wire:click='decrement'>-</button>
</div>

How It Works

Nếu bạn mở các công cụ dành cho nhà phát triển của mình và chuyển đến tab network. bạn sẽ nhận thấy rằng livewire sẽ gửi một yêu cầu khi một hành động nhấp chuột được thực hiện. Trên các hành động livewire gửi một yêu cầu ajax đến phần phụ trợ với một số dữ liệu. Điều này giúp nó cập nhật trạng thái và thực hiện bất kỳ chức năng nào khác cần được thực hiện trong hành động. Nó cũng trả về một JSON chứa trạng thái DOM mới và một số thông tin khác cần thiết để hiển thị trạng thái mới cho DOM.

When to Use Livewire

Khi xây dựng các ứng dụng tương tác, một cú nhấp chuột từ người dùng sẽ kích hoạt thay đổi trạng thái trên giao diện người dùng, gửi ajax yêu cầu tới máy chủ và giữ lại trạng thái trên giao diện người dùng nếu yêu cầu thành công hoặc trả lại trạng thái trước đó nếu không thành công.

Conclusion

Chúng ta tìm hiểu được về Laravel Livewire. Hẹn gặp lại tại các bài viết sau.

References

https://laravel-livewire.com/docs/2.x/quickstart

https://codesource.io/laravel-livewire-an-introduction/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 449

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 160

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 84

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 242