Magento 自定義模塊:在 Magento 2 中逐步創建它
已發表: 2020-11-11Magento 自定義模塊是任何 Magento 開發人員的關鍵開發過程。 如您所知,在某個時間點,開發人員可能需要集成他自己的功能或模塊。 在今天的這篇博文中,我們將逐步指導您在 Magento 2 中開發自定義模塊
最新更新:我們剛剛發布了 Claue Multipurpose Magento 2 主題的 2.0 版,其中包含一系列性能改進和獨家功能。 立即查看此主題:Claue Magento Theme 2. 0
現場演示
Claue – Clean, Minimal Magento 2&1 Theme是現代和乾淨的電子商務商店的絕佳模板,具有 40 多種主頁佈局和大量商店、博客、投資組合、商店定位器佈局和其他有用頁面的選項。 Claue 版本 2. 0 帶有一系列獨家功能,包括:
- 基於 Luma 主題。
- 滿足 Magento 主題的所有標準
- 顯著的性能提升
- 與大多數第三方擴展兼容。
- 與 Magento 2.4.x 完全兼容
第二個高級版本與之前的版本完全不同。 因此,如果您使用的是 Claue 版本 1 並想更新到 Claue 版本 2,則只能重建新網站,而不是從舊版本更新。 現在,讓我們回到主題。
Magento 是一個非常通用的平台,具有許多有用的功能,並支持免費和付費模塊。 它提供了可以在線安裝以及可以定制的模塊,以滿足客戶的需求。 定制是通過生成一個模塊來實現的,然後可以利用PHP語言的力量根據選擇進行修改。 例如,如果我們的網站具有市場上不常見的特定功能或一組功能或要求,則一個模塊可以為我們填補這一空白。
Magento 帶有 3 種類型的代碼池(代碼、核心和本地),自定義和核心模塊駐留在其中。 本地池(文件夾)是所有自定義模塊所在或應該放置的位置。 下面給出的是模塊應包含的組件。
- 塊- 在這裡您需要提供用於在我們的模板中顯示數據的功能。
- 模型——所有業務邏輯都包含在這裡。
- 資源——模型包括用於數據庫交互的函數。
- 控制器- 定義頁面佈局和塊文件,並在請求 URL 時加載。
- 等——包括 XML 格式的配置文件,顯示 Magento 模塊有多少文件以及模塊如何交互。
- 助手——包括用於定義常見業務邏輯的函數(例如圖像調整大小、驗證)。 這些函數可以在 Magento 應用程序的任何地方使用
- sql – 包含用於創建、修改或刪除 SQL 表的 SQL 腳本。
如何創建 Magento 自定義模塊?
在 Magento 2 中創建一個簡單的模塊
在 Magento 2 中生成一個簡單的模塊很容易。 您將需要完成以下任務:
- 為模塊創建一個新目錄
- 創建
registration.php
腳本 - 創建
etc/module.xml
信息文件 - 安裝新模塊
為模塊創建一個新目錄
新目錄的位置有兩個選項可供選擇
app/code/{vendor}/
-
vendor/{vendor}/
如果您的模塊適用於您正在開發的特定在線商店,您可以選擇第一個選項。 但是,如果您生成一個模塊的目的是在各種網站上使用它,那麼選擇第二個選項更合適。 現在,我將在此示例中使用第一個選項。
首先,您需要創建一個名為EndPoint
(我們的供應商名稱)的目錄,其中包含一個子目錄MyModule
:
cd {website_root} mkdir -p app/code/EndPoint/MyModule
創建registration.php腳本
registration.php
文件告訴 Magento 以特定名稱和位置註冊新模塊。
使用以下代碼生成名為app/code/EndPoint/MyModule/registration.php
的文件
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );
創建 etc/module.xml 信息文件
在這一步,您需要創建我們的模塊信息文件,我們將在其中指定模塊版本號。 首先,我們必須在app/code/EndPoint/MyModule
中生成etc
目錄:
mkdir app/code/EndPoint/MyModule/etc
然後使用以下命令行創建module.xml
<?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 = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >
安裝新模塊
現在我們需要安裝並啟用新模塊,所以從我們的網站根目錄,我們需要運行命令
php bin/magento setup:upgrade
Magento 將取出模塊名稱和配置更新列表,並且新模塊EndPoint_MyModule
應列在該列表中
向我們的模塊添加自定義路由
現在我們有一個工作的、啟用的模塊,但它還沒有做任何事情! 檢查我們的模塊是否啟用的簡單方法是什麼? 讓我們設置一個自定義路由,所以如果我們點擊像https://{our_website}/mymodule/test/helloworld
這樣的 URL,我們可以從控制器返回自定義響應。
創建自定義路由本身需要一些步驟:
- 為控制器創建一個新目錄
- 創建一個
etc/routes.xml
文件 - 創建控制器
- 升級新模塊
為控制器創建一個新目錄
首先,我們需要創建一個新目錄,用於自定義路由的新 PHP 控制器將駐留在該目錄中。 新的目錄路徑應該是:
app/code/EndPoint/MyModule/Controller
您可以根據我們所需的路徑生成任意數量的目錄級別。 例如,如果您在app/code/EndPoint/MyModule/Controller
中生成一個名為Index
的類,將被路由到該控制器的 URL 將是https://{our_website}/mymodule/index
(“控制器”目錄是忽略)。
購買 如果您在app/code/EndPoint/MyModule/Controller/Test
中生成一個名為HelloWorld
的類,則生成的 URL 將為https://{our_website}/mymodule/test/helloworld
。
創建 etc/routes.xml 文件
routes.xml
會告訴 Magento 什麼基礎 URL 將用於我們的模塊。 首先,我們需要創建需要放置 routes.xml 文件的“frontend”目錄:
mkdir app/code/EndPoint/MyModule/etc/frontend
當您需要基本 URL 為MyModule
時,您必須在新目錄中生成一個 XML 文件,該文件會將向給定 URL 發出的所有請求路由到我們的模塊控制器:
<?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >
創建控制器
如果我們想響應對https://{our_website}/mymodule/test/helloworld
的請求,您需要生成基本Controller
目錄和Test
子目錄:
mkdir -p app/code/EndPoint/MyModule/Controller/Test
在這個目錄下,你需要生成我們自定義的 Magento 控制器。 所有路由控制器都應該擴展\Magento\Framework\App\Action\Action
。 我們還需要一個公共的construct()
方法來將上下文傳遞給我們的祖先和一個execute()
一個函數,該函數將在URL 被命中時被調用:
<?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }
升級新模塊
在這一步,您需要升級我們的 Magento 設置。 但是因為您在構造中包含了一個從依賴注入器獲取參數的新控制器。 您還需要編譯依賴注入引擎(例如工廠、代理和攔截器)。 最後,您需要清除緩存,以便從我們的自定義 URL 提供新內容:
php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush
就是這樣。 在您的瀏覽器中打開/helloworld/index/index URL,您應該會看到如下內容: 這意味著我們的模塊正在運行!
教程到此結束: Magento 自定義模塊:在 Magento 2 中逐步創建它。我們希望這是一個對您有用的博客。 如果您想了解更多有關 Magento 的信息,可以閱讀我們的 Magento 平台文章以了解更多詳細信息,還記得查看我們的 Magento 2 擴展和我們的 Magento 2 主題以支持您的網站。