Nếu bạn nào đã từng làm việc với Magento chắc hẳn không còn xa lạ gì với khái niệm module nữa phải không nào. Vì toàn bộ hệ thống Magento được xây dựng dựa trên các module. Nếu bạn muốn customize, tùy chỉnh một chức năng mặc định nào đó của Magento hoặc bạn muốn phát triển chức năng của riêng mình thì việc đầu tiên bạn phải làm đó là tạo một module. Trong bài viết này, tôi sẽ hướng dẫn các bạn tạo một module có tên là ViMagento_HelloWorld một cách chi tiết và dễ hiểu nhất. Để tạo một module trong Magento 2 các bạn thực hiện theo các bước sau:
Bước 1: Cấu trúc thư mục để tạo module trong Magento 2
Tên module trong Magento 2 được chia làm hai phần đó là tên vendor và tên module. Nói cách khác thì các module được nhóm thành các vendor. Vì thế bạn cần xác định 2 phần trên để tạo một module. Ở đây tôi tạo module có tên là ViMagento_HelloWorld, ViMagento là tên vendor và HelloWorld là tên module và được nối với nhau bằng dấu ‘_’. Để tạo module ViMagento_HelloWorld các bạn tạo lần lượt các thư mục sau:
Nếu các bạn không có thư mục code hãy tự tạo nó nhé. Và để thuận tiện cho quá trình làm việc mình khuyên bạn nên đặt Magento về chế độ developer để đảm bảo bạn có thể thấy tất cả lỗi mà Magento ném ra cho bạn.
Để làm được việc này các bạn cần mở terminal và đi đến thư mục project của bạn sau đó chạy câu lệnh bên dưới:
php bin/magento deploy:mode:set developer
Để tạo module trong Magento 2 các bạn nhớ cho mình là phải tạo 2 file đó là: module.xml và registration.php sau đó chạy câu lệnh php bin/magento setup:upgrade . Sau đây chúng ta sẽ tạo các file theo từng bước một.
Bước 2: Tạo module.xml trong Magento 2
Tiếp theo các bạn tạo file module.xml nằm trong thư mục etc của module. File này là bắt buộc để đăng ký module của bạn.
Tạo file: ViMagento/HelloWorld/etc/module.xml
Với nội dung sau:
1 2 3 4 5 6 7 8 |
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="ViMagento_HelloWorld" setup_version="1.0.0"> <sequence> <module name="Magento_Catalog"/> </sequence> </module> </config> |
- Module name: Được định nghĩa bởi các thư mục mà chúng ta đã tạo ở bước thứ nhất. Ở đây là ViMagento_HelloWorld vì trong Magento, tên class phải tuân theo cấu trúc thư mục. Vì chúng ta đã tạo module có tên là ViMagento_HelloWorld nên bất cứ class nào nằm bên trong module này thì namespace phải bắt đầu với ViMagento\HelloWorld. Ví dụ: ViMagento\HelloWorld\Model\Post.
- Module version: Là phiên bản hiện tại của module được lưu trong cơ sở dữ liệu và được sử dụng trong quá trình nâng cấp module. Khi quá trình nâng cấp module xảy ra Magento sẽ so sánh version được lưu trong database và version trong module.xml nếu không khớp Magento sẽ thực hiện việc nâng cấp cho bạn. Khi các bạn học đến các bài liên quan đến setup script các bạn sẽ hiểu hơn về phần này.
- Sequence: Nếu module của bạn phụ thuộc vào một module khác module.xml sẽ có một khai báo đặc biệt định nghĩa danh sách các module mà module hiện tại phụ thuộc vào. Có nghĩa là module hiện tại có sử dụng class, model của module khác vì thế nó không thể hoạt động đúng nếu không phụ thuộc vào các module này. Ví dụ trên là module hiện tại đang phụ thuộc vào module Magento_Catalog vì thế module hiện tại sẽ được load sau khi module Magento_Catalog được load.
Bước 3: Tạo file registration.php để đăng ký module
Mỗi module đều bắt buộc phải có file này để đăng ký module cho Magento biết cách định vị module. Tiếp theo chúng ta sẽ tạo ViMagento/HelloWorld/registration.php với nội dung sau:
1 2 3 4 5 6 |
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'ViMagento_HelloWorld', __DIR__ ); |
Nội dung file này đã được chuẩn hóa cho tất cả module vì thế bạn chỉ cần thay đổi tên module cho phù hợp với module của bạn.
Bước 4: Kích hoạt module vừa tạo
Chay câu lệnh bên dưới để kích hoạt module, thông báo cho Magento biết về sự hiện diện module của bạn.
php bin/magento setup:upgrade
Bước 5: Kiểm tra xem module đã được kích hoạt hay chưa
- Xem bảng setup_module trong cơ sở dữ liệu của bạn.

- Xem trong file app/etc/config.php

Các câu lệnh bên dưới lần lượt dùng để xem trạng thái module, kích hoạt hoặc tắt module nào bạn muốn.
- php bin/magento module:status (xem trạng thái của tất cả module trong hệ thống bao gồm danh sách các module đang được kích hoạt và đang bị tắt)
- php bin/magento module:enable ViMagento_HelloWorld (kích hoạt module ViMagento_HelloWorld)
- php bin/magento module:disable ViMagento_HelloWorld (dùng để tắt module ViMagento_HelloWorld)
Sau khi thực hiện xong các bước trên các bạn đã tạo thành công module trong magento 2. Mình tin rằng đây sẽ là bước đầu tốt đẹp để các bạn có thể trở thành một nhà phát triển magento tương lại.
Các bạn cũng có thể tham khảo bài viết devdocs của Magento 2 để biết thêm chi tiết: https://devdocs.magento.com/videos/fundamentals/create-a-new-module/
Kết luận
Đây là bài đầu tiên trong loạt bài hướng dẫn về Magento 2 cơ bản. Và mình vừa hướng dẫn xong cho các bạn về các tạo module trong Magento 2. Hy vọng bài viết có thể giúp ích được phần nào cho các bạn. Bài tiếp theo tôi sẽ hướng dẫn các bạn tạo một controller trong Magento 2. Thanks.