Trong Tut magento 002 mình đã giúp anh chị em setting magento trên localhost và hôm nay 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 mày mò thì magento thực sự rất phức tạp, nó là sự phối hợp hoàn hảo 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 những framework mạnh nhất và được nhiều người sử dụng bây 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á khó khăn, 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 xây dựng ứng dụng. Nó giúp cho các developer tách phần mềm ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ biệt lập 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 :
- Magento Multi Vendor Marketplace
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 magento 2 development 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 ý.