Magento module structure

Cấu trúc module của Magento được thiết kế dựa trên mô hình MVC và thường có các folder sau:

Block

Folder này được coi là thành phần View trong mô hình MVC. Nó kết hợp với model để lấy ra dữ liệu từ database và hiển thị lên template của nó. Block đại diện cho các thành phần trên trang web, mỗi block sẽ có 2 thành phần chính:

  • Data
  • Template

Controllers

Là nơi chứa các logic để xử lý các request được gửi đến. Tại đây sẽ quyết định sử dụng layout nào để trả về cho client, gọi tới model để chuẩn bị dữ liệu cho các block (trong layout được gọi ra).

etc

Là folder chưa tất  cả các file xml – là các file cấu hình của modules. Mỗi một module đều có ít nhất 1 file cấu hình là file config.xml. File này khai báo các cấu hình cơ bản của module như là: block name, model name, helper, routers, rewrite, layout, translation, events, …

Helper

Block tương ứng với View, Controllers tương ứng với Controller, Model tương ứng với Model. Vậy còn Helper? Đó là nơi chứa các hàm thường được sử dụng trong hệ thống website của bạn. Là các hàm xử lý chung, có thể được gọi từ bất cứ block, model, controller hay template nào. Các hàm đó ko đại diện cho 1 phần xử lý của riêng 1 block, 1 model nào.

Model

Model được sử dụng để kết nối tới Database, lấy và xử lý dữ liệu từ đó. Model trongMagento được phân làm 2 loại:

  • Active Record – 1 đối tượng tương ứng với 1 bảng
  • EAV model – mô hình Entity Attribute Value

Mỗi một model trong Magento đều liên kết với 1 Model Collection. Collection này là 1 đối tượng chứa nhiều thể hiện của Model. Model ko kết nối trực tiếp tới database mà nó sẽ thông qua 2 adapter là modelResource (read và write)

sql

Là folder chứa các đoạn code liên quan đến việc thay đổi cấu trúc hay dữ liệu của database. Các file trong folder này sẽ được thực thi khi chúng ta cài đặt module mới hoặc tiến hành upgrade module cũ.