我是magento2的新手。
我想在magento 2中创建简单的Hello World模块。
如何创建这个模块?
我是magento2的新手。
我想在magento 2中创建简单的Hello World模块。
如何创建这个模块?
Answers:
好吧,这是一个广泛的问题,但是我最好的建议是检查Magento 2的官方样本。
您可以在这里找到它们:https : //github.com/magento/magento2-samples
该项目是一个示例集合,用于演示Magento 2中引入的技术。您将找到最简单的扩展以及示例,这些示例会逐步添加功能以引导您进行Magento 2平台的探索和教育。
最重要的是,如果您在Google中搜索“ magento 2创建模块”,则可以找到许多教程。
让我们命名模块StackExchange_HelloWorld
。
您将需要以下文件:
app/code/StackExchange/HelloWorld/registration.php
-注册文件
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'StackExchange_HelloWorld',
__DIR__
);
app/code/StackExchange/HelloWorld/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="StackExchange_HelloWorld" setup_version="2.0.0" />
</config>
app/code/StackExchange/HelloWorld/etc/frontend/routes.xml
-前端路由文件
<?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 id="helloworld" frontName="helloworld">
<module name="StackExchange_HelloWorld" />
</route>
</router>
</config>
app/code/StackExchange/HelloWorld/Controller/Index/Index.php
-索引控制器
<?php
namespace StackExchange\HelloWorld\Controller\Index;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends \Magento\Framework\App\Action\Action
{
protected $resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
)
{
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute()
{
$resultPage = $this->resultPageFactory->create();
$resultPage->getConfig()->getTitle()->set(__('Hello World'));
return $resultPage;
}
}
app/code/StackExchange/HelloWorld/view/frontend/layout/helloworld_index_index.xml
-布局文件
<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" template="StackExchange_HelloWorld::index.phtml" />
</referenceContainer>
</body>
</page>
app/code/StackExchange/HelloWorld/view/frontend/templates/index.phtml
-块的模板
<h2>Hello World</h2>
完成后,在控制台中运行
php bin / magento设置:升级
您应该可以在网址上看到结果 [ROOT]/helloworld
routes.xml
文件不应放在app/code/StackExchange/HelloWorld/etc/frontend
中app/code/StackExchange/HelloWorld/frontend
。有一个etc
缺失。而且我忘记use
了控制器文件中的2个子句。看到我的更新答案。
我昨天也尝试过,成功制作了自己的hello world magento 2模块。我按照本教程创建了一个简单的Magento 2模块,共有6个步骤,如下所示
=>步骤1:制作模块文件夹:
应用程序/代码/ Magentoexplorer / Helloworld
=>第2步:添加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="Magentoexplorer_Helloworld" setup_version="1.0.0" />
</config>
=>步骤3:创建registration.php来注册模块
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magentoexplorer_Helloworld',
__DIR__
);
=>步骤4:如何安装,启用或禁用/删除模块
cd [magento_directory]
php bin/magento setup:upgrade
=>步骤5:模块的路线。创建app/code/Magentoexplorer/Helloworld/etc/frontend/routes.xml
<?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 id="magentoexplorer" frontName="helloworld">
<module name="Magentoexplorer_Helloworld" />
</route>
</router>
</config>
=>步骤6:控制器和动作。
应用程序/代码/Magentoexplorer/Helloworld/Index/Index.php
<?php
namespace Magentoexplorer\Helloworld\Controller\Index;
class Display extends \Magento\Framework\App\Action\Action
{
public function __construct(
\Magento\Framework\App\Action\Context $context)
{
return parent::__construct($context);
}
public function execute()
{
echo 'Hello World';
exit;
}
}
您可以遵循的最佳模块就是这个模块:https : //github.com/magento/magento2-samples/tree/master/sample-module-newpage
它专注于Magento 2的前端。您可以使用此模块并将其转换为自己的模块。
以下是简单模块的教程
https://www.mageplaza.com/magento-2-module-development/
您也可以下载以下模块
https://github.com/tzyganu/Magento2SampleModule
Magento 2有很多可用的模块创建器。这里有一些链接
http://cedcommerce.com/magento-2-module-creator/
https://amasty.com/magento-2-module-creator.html
希望能帮助到你 :)
要在Magento 2中创建模块,需要执行以下步骤:
最佳使用PHP Storm
最佳实践使用PHP Storm
步骤1:创建Hello World模块的文件夹
步骤2:建立模组
步骤3:注册创建的模块
步骤4:启用模块
模块的名称定义为“ VendorName_ModuleName”。第一部分是供应商的名称,最后一部分是模块的名称:例如:Sathya_HelloWorld。
##### 创建文件目录为
Magento2/app/code/Sathya/HelloWorld
app/code/Sathya/HelloWorld/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="Sathya_HelloWorld" setup_version="1.0.0">
</module>
</config>
创建Registration.php文件
app/code/Sathya/HelloWorld/registration.php
内容将是:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Sathya_HelloWorld',
__DIR__
);
在启用模块之前,请确保是否已创建模块。为此,从Magento根目录运行命令as。
php bin/magento module:status
它列出了所有禁用的模块
###### Sathya_HelloWorld
要启用该模块,请运行以下命令:
php bin/magento module:enable Sathya_HelloWorld
还有另一种启用它的方法。稍后将对此进行说明。
请升级您的数据库:从Magento根目录运行“ bin / magento setup:upgrade”。
让我们运行命令:
php bin/magento setup:upgrade
请跑
php bin/magento setup:static-content:deploy
然后运行(可选)
php bin/magento setup:static-content:deploy -f
要添加路由,必须创建routes.xml文件
app/code/Sathya/HelloWorld/etc/frontend/routes.xml
内容将是:
<?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="helloworld" id="helloworld">
<module name="Sathya_HelloWorld"/>
</route>
</router>
</config>
您需要创建的目录和文件是:
app/code/Sathya/HelloWorld/Controller/Index/Test.php
内容将是:
<?php
namespace Sathya\HelloWorld\Controller\Index;
class Test extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
public function execute()
{
echo "Hello World";
exit;
}
}
完成后,请运行命令清除缓存
php bin/magento c:f
通过输入URL检查模块,现在应为:
http://< YourDomain.com >/helloworld/index/test