加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

如何在Magento中创建一个简单的模块?

发布时间:2020-05-31 12:31:55 所属栏目:PHP 来源:互联网
导读:本文章向大家介绍如何在Magento中创建一个简单的模块,需要的朋友可以参考一下。

如何在Magento完成以下任务?

使用控制器/视图/模型方法显示“Hello World”消息。当访问页面http://example.com/myController会显示字符串'Hello World'。能够在我的网站模板中显示此字符串(例如,页眉,页脚等)。

如何向该控制器(或必要时的新控制器)添加一个方法,该方法与模型交互,并执行查询Select * FROM articles where id='10'并将行(包含列id,title,content)返回给控制器?然后控制器包含一个视图,该视图将显示此行。当转到http://example.com/myController/show_row(或类似的东西)会在视图中显示该行。(不需要花哨,只需要一个echo $row->id;或类似的东西。)

创建一个模块

Magento的所有添加和自定义都是通过模块完成的。因此,您需要做的第一件事是创建一个新模块。在app/modules命名中创建XML文件,如下所示

cd /path/to/store/app

touch etc/modules/MyCompanyName_HelloWorld.xml

true

local

MyCompanyName是您修改的唯一命名空间,它不一定是您公司的名称,而是推荐的约定my magento。HelloWorld是您的模块的名称。

清除应用程序缓存

现在模块文件到位了,我们需要让Magento了解它(并检查我们的工作)。在管理应用程序中

转到系统 - >缓存管理

从All Cache菜单中选择Refresh

单击保存缓存设置

现在,我们确保Magento了解该模块

进入系统 - >配置

单击高级

在“禁用模块输出”设置框中,查找名为“MyCompanyName_HelloWorld”的新模块

如果您可以忍受性能下降,则可能需要在开发/学习时关闭应用程序缓存。没有什么比这更令人沮丧的了,忘记清除缓存并想知道为什么你的更改没有显示出来。

设置目录结构

接下来,我们需要为模块设置目录结构。你不需要所有这些目录,但现在设置它们没有任何害处。

mkdir -p app/code/local/MyCompanyName/HelloWorld/Block

mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers

mkdir -p app/code/local/MyCompanyName/HelloWorld/Model

mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper

mkdir -p app/code/local/MyCompanyName/HelloWorld/etc

mkdir -p app/code/local/MyCompanyName/HelloWorld/sql

并添加配置文件

touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml

在配置文件中,添加以下内容,这实际上是一个“空白”配置。

0.1.0

这个配置文件过于简单化,可以让你告诉Magento你想要运行什么代码。

设置路由器

接下来,我们需要设置模块的路由器。这将让系统知道我们正在处理任何形式的URL

http://example.com/magento/index.php/helloworld

因此,在配置文件中,添加以下部分。

standard

MyCompanyName_HelloWorld

helloworld

你在这里说的是“任何带有helloworld的frontName的URL ......

http://example.com/magento/index.php/helloworld

应该使用frontName控制器MyCompanyName_HelloWorld“。

因此,通过上述配置,当您加载上面的helloworld页面时,您将获得一个404页面。那是因为我们没有为控制器创建文件。我们现在就这样做。

touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php

现在尝试加载页面。进展!而不是404,你将获得PHP / Magento异常

Controller file was loaded but class does not exist

因此,打开我们刚刚创建的文件,并粘贴以下代码。类的名称需要基于您在路由器中提供的名称。

class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{

public function indexAction(){

echo "We're echoing just to show that this is what's called,normally you'd have some kind of redirect going on here";

}

}

我们刚刚设置的是模块/ frontName控制器。这是默认控制器和模块的默认操作。如果你想添加控制器或动作,你必须记住,Magento URL的树的第一部分是不可变的,它们总是会这样http://example.com/magento/index.php/frontName/controllerName/actionName

所以,如果你想匹配这个网址

http://example.com/magento/index.php/helloworld/foo

你必须有一个FooController,你可以这样做:

touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php

class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{

public function indexAction(){

echo 'Foo Index Action';

}

public function addAction(){

echo 'Foo add Action';

}

public function deleteAction(){

echo 'Foo delete Action';

}

}

请注意,默认控制器IndexController和默认操作indexAction可以隐式但必须是显式的,如果它后面的东西。因此http://example.com/magento/index.php/helloworld/foo将匹配控制器FooController和动作indexAction而不是IndexController的动作fooAction。如果你想拥有一个fooAction,那么在控制器IndexController中你必须像这样明确地调用这个控制器:http://example.com/magento/index.php/helloworld/index/foo因为url的第二部分是并且将永远是controllerName。此行为是Magento中捆绑的Zend Framework的继承。

您现在应该能够点击以下URL并查看echo语句的结果

http://example.com/magento/index.php/helloworld/foo

http://example.com/magento/index.php/helloworld/foo/add

http://example.com/magento/index.php/helloworld/foo/delete

所以,这应该给你一个关于Magento如何调度到控制器的基本想法。从这里开始,我建议在现有的Magento控制器类中查看模型和模板/布局系统的使用方法。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读