Tạo module hello world trong Magento 2

Hello World là 1 trong những đoạn code basic nhất mà bất kỳ ngôn ngữ nào mới học bạn đều gặp phải khi bắt đầu. Với bài viết này cũng không ngoại lệ, chúng ta sẽ tìm hiểu cách tạo 1 module cho Magento 2 với kết quả xuất ra trên browser là “Hello World”.

Module trong Magento là 1 folder chứa các thành phần như blocks, controllers, models, helper, etc …. Trong Magento 2, các module được đặt ở thư mục app/code, và cấu trúc mỗi module sẽ theo format sau app/code/<Vendor>/<ModuleName> (với <Vendor> là tên của công ty hay tổ chức, <ModuleName> là tên của module)

Tạo đường dẫn cho module mới

Trong bài viết này tôi sử dụng Laptrinhinfo là tên vendor và HelloWorld là tên của module. Do đó chúng ta sẽ tạo cấu trúc folder là app/code/Laptrinhinfo/HelloWorld.

Mô tả module bằng cách sử dụng file cấu hình module.xml

Tạo thư mục etc trong thư mục chứa module ở bước 1, thêm vào đó file module.xml (đường dẫn sẽ là app/code/Laptrinhinfo/HelloWorld/etc/module.xml) với nội dung bên dưới

Chúng ta đăng ký tên của module là Laptrinhinfo_HelloWorld và version của module là 1.0.0

Đăng ký module bởi file registration.php

Tất cả module của Magento 2 phải được đăng ký thông qua class ComponentRegistrar, dó đó chúng ta tiến hành tạo file app/code/Laptrinhinfo/HelloWorld/registration.php với nội dung sau

Bật/cho phép module hoạt động

Để xem toàn bộ danh sách module đang hoạt động cũng như đang bị tắt (vô hiệu), bạn có thể gõ lệnh sau tại đường dẫn cài dặt Magento 2

Do module HelloWorld mới khởi tạo và chưa được bật lên do đó sẽ xuất hiện dòng sau

Chúng ta sẽ bật/cho phép module này hoạt động bằng lệnh

Kết quả sau khi enable

Sau cùng bạn cần upgrade lại Magento 2

Bạn có thể kiểm tra xem module đã xuất hiện chưa trong admin tại Stores > Configuration > Advanced > Advanced

Tạo đường dẫn router cho module

Trong Magento 2, đường dẫn URL sẽ dựa theo format sau

Chúng ta sẽ tạo file router app/code/Laptrinhinfo/HelloWorld/etc/frontend/routes.xml để khi truy cập vào /helloworld/* ngoài frontend, module này sẽ được gọi ra

Đường dẫn tương ứng ngoài frontend sẽ là

Tạo controller và acion

Chúng ta sẽ tạo file app/code/Laptrinhinfo/HelloWorld/Controller/Index/Display.php với nội dung như sau

Sau khi bạn truy cập vào http://example.com/helloworld/index/display trên trình duyệt, kết quả hiện ra trên màn hình sẽ là ‘Hello World’