如何在 Magento 2 中創建 Hello World 擴展
已發表: 2017-04-25我們將在 Magento 2 中構建一個非常簡單的擴展。完成後,擴展的輸出會說“Hello Weblizar,這是你的第一個 hello world Magento 擴展! ” 在自定義前端路由的塊內容中。 讓我們學習如何在 magento 2 中創建一個以 hello world 作為輸出的擴展。
要求 :
在列表中,您擁有當前為 2.1 的最新 Magento 2 版本。 安裝在您的本地系統上。
在我們開始 Magento 2 擴展開發之前,人們經常忘記兩件事,我們建議您這樣做:
1.禁用Magento緩存
在開發過程中禁用 Magento 緩存將為您節省一些時間,因為您無需在每次更改代碼時手動刷新緩存。
禁用緩存的最簡單方法是轉到 Admin => System => Cache Management => 選擇所有緩存類型並禁用它們。
2. 將 Magento 置於開發者模式
您應該將 Magento 置於開發者模式,以確保您看到 Magento 向您拋出的所有錯誤。
為此,請打開終端並轉到 Magento 2 根目錄。 從那裡你應該運行以下命令:
php bin/magento 部署:模式:設置開發人員
如何在 Magento 中創建擴展:
創建擴展文件和文件夾:
擴展設置
第一步是創建擴展文件夾和註冊 Magento 擴展所需的必要文件。
1. 創建以下文件夾:
- 應用程序/代碼/Weblizar
- 應用程序/代碼/Weblizar/Helloworld
Weblizar 文件夾是擴展命名空間,Helloworld 是擴展名。
注意:如果您的應用目錄中沒有代碼文件夾,請手動創建它。
2. 現在我們有了擴展文件夾,我們需要在 app/code/Weblizar/Helloworld/etc 文件夾中創建一個 module.XML 文件,代碼如下:
<?xml 版本=“1.0”?>
<config xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:Module/etc/module.xsd”>
<模塊名稱=”Weblizar_Helloworld” setup_version=”1.0.0″></module>
</配置>
3. 要註冊模塊,請在 app/code/Weblizar/Helloworld 文件夾中創建一個 registration.php 文件,代碼如下:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Weblizar_Helloworld',
__DIR__
); ?>
4. 打開您的終端並轉到 Magento 2 根目錄。 從那裡運行以下命令:
php bin/magento 設置:升級
如果要確保已安裝擴展程序,可以轉到 Admin => Stores => Configuration => Advanced => Advanced 並檢查擴展程序是否存在於列表中,或者您可以打開 app/etc/config.php並檢查數組中的“Weblizar_Helloworld”鍵,其值應設置為 1。
創建控制器
1.首先我們需要定義路由器。 為此,請在 app/code/Weblizar/Helloworld/etc/frontend 文件夾中創建一個 routes.XML 文件,其中包含以下代碼:
<?xml 版本=“1.0”?>
<config xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:App/etc/routes.xsd”>
<路由器ID =“標準”>
<route id=”helloworld” frontName=”helloworld”>
<模塊名稱="Weblizar_Helloworld" />
</路線>
</路由器>
</配置>
在這裡,我們定義了我們的前端路由器和 id 為“helloworld”的路由。
frontName 屬性將成為我們 URL 的第一部分。
在 Magento 2 中,URL 是這樣構造的:
<frontName>/<controler_folder_name>/<controller_class_name>

因此,在我們的示例中,最終 URL 將如下所示:
你好世界/索引/索引
2. 現在我們在 app/code/Weblizar/Helloworld/Controller/Index 文件夾中創建 Index.php 控制器文件,代碼如下:
<?php
命名空間 Weblizar\Helloworld\Controller\Index;
使用 Magento\Framework\App\Action\Context;
類索引擴展 \Magento\Framework\App\Action\Action
{
受保護的 $_resultPageFactory;公共函數 __construct(上下文 $context,\Magento\Framework\View\Result\PageFactory $resultPageFactory)
{
$this->_resultPageFactory = $resultPageFactory;
父::__construct($context);
}公共函數執行()
{
$resultPage = $this->_resultPageFactory->create();
返回$結果頁;
}
}
在 Magento 2 中,每個動作都有自己的實現 execute() 方法的類。
創建塊
我們將使用返回“Hello world”字符串的 getHelloWorldTxt() 方法創建一個簡單的塊類。
1. 在 app/code/Weblizar/Helloworld/Block 文件夾中創建一個 Helloworld.php 文件,代碼如下:
<?php
命名空間 Weblizar\Helloworld\Block;Helloworld 類擴展了 \Magento\Framework\View\Element\Template
{
公共函數 getHelloWorldTxt()
{
return 'Hello Weblizar,這是你的第一個 hello world magento 擴展!';
}
}
創建佈局和模板文件
在 Magento 2 中,佈局文件和模板放置在擴展內的視圖文件夾中。 在視圖文件夾中,我們可以有三個子文件夾:adminhtml、base 和 frontend。
adminhtml 文件夾用於管理,前端文件夾用於前端,基本文件夾用於管理和前端文件。
1. 首先,我們將在 app/code/Weblizar/Helloworld/view/frontend/layout 文件夾中創建一個 helloworld_index_index.XML 文件,代碼如下:
<page xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”../../../../../../../lib /內部/Magento/框架/
查看/佈局/etc/page_configuration.xsd” layout=”1column”>
<正文>
<referenceContainer 名稱=“內容”>
<block class=”Weblizar\Helloworld\Block\Helloworld” name=”helloworld” template=”helloworld.phtml” />
</referenceContainer>
</正文>
</頁面>
每個頁面都有一個佈局句柄,對於我們的控制器操作,佈局句柄是 helloworld_index_index。 您可以為每個佈局句柄創建一個佈局配置文件。
在我們的佈局文件中,我們向內容容器添加了一個塊,並將我們的塊的模板設置為 helloworld.phtml,我們將在下一步中創建它。
2. 在 app/code/Weblizar/Helloworld/view/frontend/templates 文件夾中創建一個 helloworld.phtml 文件,代碼如下:
<h1><?php echo $this->getHelloWorldTxt(); ?></h1>
$this 變量引用了我們的塊類,我們正在調用 getHelloWorldTxt() 方法,該方法返回字符串“Hello world!”。
就是這樣。 在瀏覽器中打開 /helloworld/index/index URL,您應該會得到類似的內容
單擊此處下載 hello world magento 擴展