Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5

Cách Tạo Một Helper trong Laravel

by
Difficulty:BeginnerLength:LongLanguages:

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Để bắt đầu, tôi muốn để cho trang web chính thức của Laravel nói về các helper (trợ giúp).

Laravel bao gồm một loạt các hàm "helper" PHP toàn cục. Nhiều trong số các hàm này được sử dụng bởi chính framework; tuy nhiên, bạn có thể thoải mái sử dụng chúng trong các ứng dụng của riêng bạn nếu bạn thấy chúng thuận tiện.

Do đó, về cơ bản, helper trong Laravel là các hàm tiện ích được tích hợp sẵn mà bạn có thể gọi từ bất cứ nơi nào trong ứng dụng của bạn. Nếu chúng không được cung cấp bởi framework chính, thì bạn có thể phải phát triển các lớp helper của riêng bạn.

Mặc dù nhân Laravel cung cấp rất nhiều helper khác nhau, nhưng sẽ có lúc bạn cần helper riêng của mình và muốn phát triển nó, do đó bạn sẽ không phải lặp lại code giống nhau ở đây và ở đó, từ đó giúp việc bảo trì được tốt hơn. Bạn sẽ học cách tạo một helper tuỳ biến cho Laravel trong hướng dẫn này.

Helper trong Laravel

Như chúng ta đã thảo luận trước đó, có rất nhiều helper sẵn có trong nhân của framework Laravel. Chúng được nhóm lại với nhau dựa trên tính năng mà chúng cung cấp. Dưới đây là danh sách các nhóm helper.

Mảng

Các helper trong nhóm này cung cấp các chức năng để thao tác lên các phần tử mảng. Thông thường, bạn ở trong tình huống nơi mà bạn muốn thực hiện các thao tác khác nhau trên các phần tử mảng. Vì vậy, đây là nơi bạn nên tìm kiếm đầu tiên để xem liệu những gì bạn đang tìm kiếm có tồn tại hay chưa.

Đường dẫn

Tôi thấy các helper trong danh mục này là hữu ích nhất. Chúng trả về đường dẫn đầy đủ của các thư mục khác nhau như app, storage, config, và tương tự. Tôi cá rằng bạn đang sử dụng hầu hết những helper đã có này trong ứng dụng Laravel của bạn.

Chuỗi

Thao tác lên chuỗi là điều không thể tránh khỏi trong phát triển ứng dụng hàng ngày của bạn. Mặc dù có rất nhiều hàm để thao tác chuỗi được cung cấp bởi chính PHP, nhưng bạn sẽ tìm thấy một vài hàm hữu ích trong phần này.

URL

Bạn sẽ tìm thấy rất ít hàm trong danh mục này, nhưng chúng được sử dụng xuyên suốt trong ứng dụng. Chúng được sử dụng để tạo ra các route, asset và URL action của form.

Hỗn hợp

Danh mục này chứa những helper cung cấp nhiều chức năng khác nhau, từ đăng nhập cho đến gỡ lỗi và vân vân.

Để tham khảo đầy đủ về helper trong Laravel, không có nơi nào tốt hơn là tài liệu hướng dẫn chính thức.

Tạo Helper Đầu tiên Của Bạn

Bây giờ bạn đã có một sự hiểu biết cơ bản về những helper trong Laravel và chúng được sử dụng cho mục đích gì. Trong phần này, tôi sẽ tiếp tục và minh hoạ cách làm thế nào để bạn có thể tạo ra helper tuỳ biến của riêng bạn để có thể được sử dụng trên toàn cục trong ứng dụng Laravel của bạn.

Để giữ cho mọi thứ được đơn giản và dễ hiểu, nó sẽ là một helper khá cơ bản, nhận một userid và trả về một username (tên người dùng) như là một phản hồi. Tất nhiên, điều đó không có vẻ là hữu ích lắm, nhưng tôi tin rằng nó đủ để minh hoạ khái niệm, và bạn luôn có thể mở rộng nó để đáp ứng các yêu cầu phức tạp của bạn.

Tôi giả sử rằng bạn có một bảng users trong cơ sở dữ liệu của bạn và nó có ít nhất hai trường—userid và username.

Bộ khung của Một Helper trong Laravel

Trước khi chúng ta bắt đầu và thật sự tạo các tập tin, hãy cùng xem xét các tập tin mà chúng ta sẽ tạo ra trong phần còn lại của bài viết.

  • app/Helpers/Envato/User.php: Đây là tập tin hỗ trợ của chúng ta chứa logic của helper.
  • app/Providers/EnvatoServiceProvider.php: Đây là tập tin service provider (cung cấp dịch vụ) tuỳ biến giúp nạp tập tin helper tùy biến của chúng ta.
  • config/app.php: Trong tập tin này, chúng ta sẽ khai báo service provider tuỳ biến của chúng ta và đồng thời giúp chúng ta xác định bí danh cho helper để chúng ta không phải sử dụng tên lớp đầy đủ của helper của chúng ta.
  • routes/web.php: Một tập tin route Laravel khá chuẩn, nơi chúng ta sẽ thật sự kiểm thử helper của chúng ta.

Tạo Các Tập tin Helper

Mặc dù bạn có thể đặt các tập tin helper của bạn ở bất kỳ nơi nào trong ứng dụng của bạn, nhưng cách trực quan và tiêu chuẩn hơn đó là nó nên nằm trong thư mục app của bạn.

Vì vậy hãy tiếp tục và tạo một thư mục Helpers/Envato trong app và tạo một tập tin User.php với các nội dung sau. Tất nhiên, bạn có thể đặt nó trực tiếp trong thư mục app hoặc app/Helpers, nhưng thêm cấp độ bổ sung cho phép chúng ta tổ chức các helper của chúng ta tốt hơn, đặc biệt là khi bạn có rất nhiều helper.

Tập tin bắt đầu bằng một khai báo không gian tên khá tiêu chuẩn:

Mục đích của helper tuỳ biến của chúng ta là lấy về một username dựa trên một userid. Do đó, chúng ta cần phải tương tác với cơ sở dữ liệu, và điều đó buộc chúng ta phải bao gồm DB Facade.

Đối với những người không nắm vững về Facade trong Laravel, nó chỉ là một cách thuận tiện để truy xuất các đối tượng trong các service container. Ngoài ra, bạn có thể đã sử dụng dependency injection.

Tiếp tục, đến với cài đặt cụ thể cho helper của chúng ta. Như bạn thấy, có một phương thức tĩnh định nghĩa logic trong việc truy xuất một username dựa trên một userid.

Đối tượng $user nắm giữ bản ghi cơ sở dữ liệu với userid trùng khớp. Cuối cùng, phương thức trả về username dưới dạng một phản hồi trong câu lệnh sau.

Như vậy, tập tin helper của chúng ta gần như xong.

Bây giờ chúng ta đã tạo ra tập tin helper của chúng ta, nhưng câu hỏi đặt ra là bạn sẽ sử dụng nó như thế nào? Hai ý tưởng nhanh chóng ở trong đầu tôi:

  • Bạn có thể bao gồm tên tập tin helper của chúng ta trong composer.json, để nó được nạp tự động. Sau đó, bạn có thể gọi ngay phương thức tĩnh của lớp helper của chúng ta.
  • Bạn có thể tiếp tục và tạo một service provider trong Laravel cho phép bạn đăng ký tập tin helper tùy biến của bạn để framework Laravel tải nó cùng với các phụ thuộc khác. Hãy đăng ký service provider trong cấu hình Laravel và tạo một bí danh để sử dụng helper của bạn.

Tất nhiên, cái đầu tiên là khá nhanh và dễ dàng để thực hiện, và bạn có thể bị cám dỗ để làm như vậy, nhưng tôi muốn khuyên dùng cách thứ hai vì nó trông giống như một cách thủ công và có thể bảo trì tốt hơn.

Chuyển sang dòng lệnh và chạy lệnh sau đây trong thư mục gốc của ứng dụng của bạn để tạo ra một service provider mới.

Bạn sẽ thấy thông báo xác nhận rằng nó đã được tạo thành công trong thư mục app/Providers.

Mở tập tin đó và bạn sẽ thấy hai phương thức trong đó. Điều quan trọng trong ngữ cảnh của bài viết này là phương thức register. Vâng, lúc này thì nó trống rỗng, vì vậy chúng ta hãy thêm một số thứ để làm cho nó hữu ích hơn.

Phương thức register được sử dụng để đăng ký các phụ thuộc của bạn và chúng ta đã làm xong điều đó. Chúng ta đã bao gồm tập tin helper tùy biến của chúng ta.

Tập tin app/Providers/EnvatoServiceProvider.php sẽ trông giống như sau sau khi sửa đổi.

Như vậy, đến lúc này tất cả đều khá ổn. Chúng ta có helper tuỳ biến và service provider của chúng ta.

Tiếp theo, chúng ta cần thông báo cho Laravel về service provider của chúng ta để nó có thể nạp nó trong quá trình khởi động. Hãy mở config/app.php và thêm các mục sau đây vào cuối mảng providers.

Để sử dụng helper của chúng ta theo một cách thuận tiện, chúng ta cũng có thể tạo ra một bí danh. Vì vậy, chúng ta hãy làm điều đó bằng cách thêm mục sau đây vào cuối mảng aliases trong cùng một tập tin.

Bằng cách định nghĩa mục này, chúng ta có thể gọi helper của chúng ta bằng cách sử dụng từ khóa EnvatoUser. Khá thuận tiện, phải không? Để tham khảo, dưới đây là tập tin config/app.php hoàn chỉnh.

Chúng ta đã gần xong! Chúng ta đã làm tất cả những công việc khó khăn để đến được đây, và bây giờ chúng ta có thể gặt hái những thành quả của helper tùy biến của chúng ta.

Sử dụng Helper Đầu tiên của Bạn

Một lần nữa, để giữ cho mọi thứ đơn giản và dễ hiểu, chúng ta sẽ định nghĩa một route cơ bản trong Laravel và gọi helper của chúng ta từ đó!

Tiếp tục và tạo một tập tin routes/web.php với các nội dung sau:

Điều đó có cần lời giải thích nào không? Chúng ta đã gọi helper tùy biến bằng cách viết tắt EnvatoUser::get_username, và nó sẽ trả về username.

Tất nhiên, bạn có thể gọi helper của chúng ta từ bất cứ nơi nào trong ứng dụng, có thể là một controller hoặc view.

Như vậy là đã kết thúc câu chuyện của chúng ta ngày hôm nay.

Tóm tắt

Các helper trong Laravel thật sự là một tính năng mạnh mẽ và tôi chắc chắn rằng với vai trò là một nhà phát triển, bạn sẽ muốn mở rộng nó. Và đó là chủ đề của ngày hôm nay—chúng ta đã đi qua những điều cơ bản của cấu trúc tập tin helper trong Laravel và tạo ra một helper hữu ích.

Tôi hy vọng bạn thích bài viết này và nó giúp bạn tạo ra những helper tuỳ biến cho việc phát triển ứng dụng Laravel hàng ngày của bạn.

Đừng ngần ngại để lại nhận xét và yêu cầu của bạn trong phần bình luận bên dưới. Tôi cũng theo dõi những ý kiến trên Twitter của tôi và trả lời chúng ngay khi tôi có thể!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.