Tutorials Magento 3: cấu trúc trong của mã nguồn magento

Trong Tut magento 002 mình đã giúp các bạn setting magento trên localhost và ngay bây giờ mình sẽ giới thiệu cho các bạn kiến trúc bên trong của mã nguồn mở này.

Đối với những người mới khám phá thì magento thực sự rất khó hiểu, nó là sự phối hợp tuyệt vời của Zend Framework với kiến trúc MVC (Model – View – Controller).

– Zend Framework: một framework được build bằng PHP, nó là một trong nhiều framework mạnh nhất và được rất nhiều người sử dụng hiện giờ bởi có rất nhiều tính năng ưu việt mà những framework khác không có. Đến với Zend, chúng ta rất dễ mở rộng các lớp xử lý của mình, nhúng những thư viện khác mà việc config không quá vất vả, phức tạp.

– Mô hình MVC: được hiểu nôm na là một mô hình thiết kế được sử dụng trong kỹ thuật phát triển phần mềm. Nó giúp cho các developer tách ứng dụng ra 3 thành phần không giống nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và tự do với các thành phần khác.

+ Model: là các lớp cung cấp dữ liệu, dịch vụ liên quan đến dữ liệu và business logic. Các lớp này làm việc trực tiếp với dữ liệu và cung cấp dữ liệu cho các thành phần khác. Trong magento, các lớp này được chứa trong thư mục Model.

+ View: là các lớp định nghĩa cách thức trình bày dữ liệu (không cập nhật dữ liệu). Các lớp này được chứa trong thư mục Block, template của module.

+ Controller: là các lớp điều khiển luồng ứng dụng, nó tiếp nhận đầu vào là các yêu cầu của người dùng thông qua HTTP header, chuyển tiếp các yêu cầu đó đến các lớp phụ trách trực tiếp xử lý yêu cầu. Từ đường link, router sẽ tìm đến Controller điều khiển đường link đó. Trong Magento, các lớp này được đặt trong thư mục controllers.

Một số sản phẩm Magento của chúng tôi :

- multi vendor marketplace

- checkout magento

- online product designer

1. Cấu trúc thư mục trong magento

/ app / etc – thư mục chứa những config global

/ app / code – chứa những modules ( models, controllers, helpers, blocks… )

/ app / code / core – những module do team magento phát triển

/ app / code / community – những module do cộng đồng phát triển

/ app / code / local – những module do những nhà phát triển khác

/ app / code / core / Mage – namespace default của magento

/ app / code / core / Mage / Module – module root

/ app / code / core / Mage / Module / etc – module configuration

/ app / code / core / Mage / Module / controllers – controllers module

/ app / code / core / Mage / Module / Block – Block logic classes

/ app / code / core / Mage / Module / Model – Object Models provided by module

/ app / code / core / Mage / Module / Model / Mysql4 – Resource Models provided by module

/ app / code / core / Mage / Module / sql – sql installation and upgrade files between module versions

/ app / code / core / Mage / Module / sql / resource / – resource model specific upgrades

/ app / code / core / Mage / Module / sql / resource / type-action-versions.(sql|php) – resource update files. example: mysql4-upgrade-0.6.23-0.6.25.sql

/ app / design – is location of design packages (layouts, templates, translations)

/ app / design / frontend – frontend design

/ app / design / adminhtml – HTML admin panel design

/ app / design / area / package / theme – theme customizations

/ app / design / area / package / theme / layout – .xml files that define block structure for different cases in website flow

/ app / design / area / package / theme / template – .phtml (html with php tags) templates

/ app / design / area / package / theme / locale – Zend_Translate compatible translation files for package/theme

/ app / locale – locale files

/ app / locale / locale (en_US) – Zend_Translate compatible translation files for modules

/ skin / area / package / theme / – is where design package css and images are

/ lib – are libraries such as Zend and Varien

/ js – are javascripts smile

/ media – uploaded files (product images, pdf documents, etc)

/ tests – Unit tests (not done yet)

/ var – temporary files

/ includes – contains config.php

2. Cấu trúc module

Một best magento extension bao gồm có các phần chính sau:

+ Block: Là nơi dùng để load dữ liệu, điều chỉnh dữ liệu từ database trước khi cho hiển thị dữ liệu ra template.

+ Controller: Nhận yêu cầu từ phía người dùng từ http sau đó sẽ chuyển yêu cầu tới các lớp xử lý.

+ Etc: bao gồm các file xml dùng để config cho module. Tùy theo mỗi module mà có những file xml khác nhau.
– Config.xml: dùng để khai báo model,helper,block…

– System.xml: config tạo ra 1 số field, hiển thị trên menu bên trái khi click vào system\config.

– Adminhtml.xml: dùng để config hiển thị trên menu chính của phần quản trị.

+ Helper: trong này dùng để viết các function được sử dụng ở nhiều nơi khác nhau trong hệ thống. Cách gọi 1 helper: Mage::helper('tenmodule/tenhelper')->helperTenfunction();

+ Model: Dùng để viết các câu lệnh truy vấn trực tiếp với cơ sở dữ liệu.

+ Sql: dùng để tạo bảng, cập nhật bảng dữ liệu, tương tác thay đổi dữ liệu…

* Kết luận: sau bài viết này các bạn đã có thể hình dung được một phần cấu trúc cơ bản của Magento, thư mục cũng như mô hình xây dựng lên magento. Bài viết vẫn còn nhiều thiếu sót mong được mọi người góp ý.