magento2插件

m2的插件写法跟m1结构大体有点像,但是还是有很大不同。
插件都放在app/code下,如果没有code目录,就手动创建一个app/code。
跟m1一样,比如插件为Zou_HelloWorld, Zou是供应商名,HelloWorld是其插件名。

要创建HelloWorld插件,您需要完成以下步骤:

  • 第1步:创建HelloWorld插件的文件夹  -> 插件源代码目录
  • 第2步:创建etc/module.xml文件  ->   插件的核心配置文件,定义版本号。
  • 第3步:创建registration.php文件  -> 用于向系统注册该插件
  • 第4步:创建composer.json文件 ->  用于添加依赖以及打包
  • 第5步:启用该插件

第一步:创建HelloWorld插件的文件夹

app/code/Zou/HelloWorld

第2步:创建etc/module.xml文件。

app/code/Zou/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="Zou_HelloWorld" schema_version="1.0.0" setup_version="1.0.0">

</module>

</config>

第3步:创建registration.php文件

app/code/Zou/HelloWorld/registration.php

内容是:

<?php

MagentoFrameworkComponentComponentRegistrar::register(

MagentoFrameworkComponentComponentRegistrar::MODULE,

'Zou_HelloWorld',

__DIR__

);

第4步:创建composer.json文件

app/code/Zou/HelloWorld/composer.json

内容是:

{

"name" : "zou/helloworld",

"description" : "demo",

"require" : {

"php" : "~5.5.0|~5.6.0|~7.0.0"

},

"type" : "magento2-module",

"version" : "1.0.0",

"license" : [

"OSL-3.0",

"AFL-3.0"

],

"autoload" : {

"files" : [

"registration.php"

],

"psr-4" : {

"zou\helloworld\" : ""

}

}

}

第5步:启用该模块

在根目录下执行命令

php bin/magento module:status

应该看到该模块现在被禁用
List of disabled modules: Zou_HelloWorld

执行命令 启用该模块

php bin/magento module:enable Zou_HelloWorld

或者直接修改config.php文件

vim app/etc/config.php

找到Zou_HelloWorld 并设为1

'Zou_HelloWorld' => 1,

这样模块就可用了

然后前台打开浏览器,发现报错:
Please upgrade your database: Run “bin/magento setup:upgrade” from the Magento root directory.

执行下面的命令即可

php bin/magento setup:upgrade

完成后,再次打开浏览器 发现样式都乱了 什么鬼?

image http://bbs.mallol.cn/assets/images/1-6goQ4I59jWEdJiuN.png

别怕,这是因为没有找到静态css/js文件,需要手动生成一下,执行如下命令即可

php bin/magento setup:static-content:deploy

我们可以用下面的命令查看插件的状态:

php bin/magento module:status

如果为1的话 就是已安装的;为0就是未安装的。

接下来,我们定义一个控制器来测试

首先得创建一个路由
在magento的路由分为3个部分:路由名称,控制器和action如下例:

http://test.mallol.cn/index.php/frontname/controller/action

要添加路由,需要创建routes.xml文件

vim app/code/Zou/HelloWorld/etc/frontend/routes.xml

由于这是一个前端路由,我们将其添加到frontend/下面,如果是后端路由,我们需要将其添加到adminhtml/下面
这个前端路由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="Zou_HelloWorld" />

</route>

</router>

</config>

定义路由的第一部分后,URL将显示为:

http://<yourhost.com>/helloworld/*

那么,我们将继续Controller和action

您需要创建的文件夹和文件是:

app/code/Zou/HelloWorld/Controller/Index/Test.php

内容将是:

<?php

namespace Zou\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;

}

}

熟悉m1的童鞋会有点纳闷,怎么action不是写在控制器文件里面,而是单独分开呢?
对,没错,m2就是这么设计的,把action都独立分成单独的文件了,这样更清晰,有效的避免了控制器文件内容太长的问题。

完成后,运行清缓存命令:

php bin/magento cache:clean

再检查结果。

你的网址现在应该是:

http://<yourhost.com>/helloworld/index/test

完成所有步骤后,当你打开URL时,浏览器上会显示'Hello World'。
这样 一个最简单的插件就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值