创建模块思路:
- 创建一个 test模块
- 为这个模块配置路由
- 为这个模块创建执行控制器
第一步:
我们要创建一个模块的目录结构
app/code/local/公司名称/模块名字/...
//命名规则
app/code/local/Goglobalis/Test/Block
app/code/local/Goglobalis/Test/controllers
app/code/local/Goglobalis/Test/etc
app/code/local/Goglobalis/Test/Helper
app/code/local/Goglobalis/Test/Model
app/code/local/Goglobalis/Test/sql
第二步:创建config文件,并为模块分配路由
app/code/local/Goglobalis/Test/etc/config.xml
编辑config.xml 内容如下:
<config>
<modules><!-- 模块版本信息-->
<Goglobalis_Test>
<version>0.1</version>
</Goglobalis_Test>
</modules>
<frontend><!--定义magento区 frontend网站前台-->
<routers><!--<routers>标签有时候包含的是路由对象的定义,有时候包含的是路径的定义。路由对象是进行路由操作的实体,而路径仅仅是路由对象的一个参数-->
<test>
<use>standard</use><!--使用标准固定写法-->
<args>
<module>Goglobalis_Test</module><!-- 模块全名 定义你的模块文件-->
<frontName>test</frontName><!-- 模块名称(此处仅支持小写)-->
</args>
</test>
</routers>
</frontend>
</config>
第三步:创建一个系统配置文件来激活这个模块
然后我们要创建一个系统配置文件来激活这个模块 app/etc/modules/Goglobalis_Test.xml
内容如下:
<config>
<modules>
<Goglobalis_Test>
<active>true</active>
<codePool>local</codePool>
</Goglobalis_Test>
</modules>
</config>
激活后:让我们检查一下模块是不是已经被激活
- 清空 Magento 缓存
- 在管理后台,进入 System->Configuration->Advanced
- 展开“DisableModulesOutput”
- 确认 Goglobalis_Test显示出来了
第四步:为路由创建创建执行控制器
app/code/local/Goglobalis/Test/controllers/indexController.php
<?php
//我们自己定义的属于 frontend 区的执行控制器都应该继承 Mage_Core_Controller_Front_Action
class Goglobalis_Test_indexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo 'Hellw Word!';
}
}
清空 Magento 缓存,请求如下 URL http://exmaple.com/test/index/index 如果你看到一个空白页面上面写着“Hello World!”,那么恭喜你,你已经成功 创建了你的第一个 Magento 控制器!
如何命名执行控制器?
如上我们创建的事index控制器,那如果想创建login控制器呢?
只需要改动第四步两个地方即可:
改成loginController即可
Magento 默认的路由的规则如下 http://www.efish.tk/frontName/actionControllerName/actionMethod/
所以在我们请求的 URL http://exmaple.com/test/index/index 其中“test”是“frontName”,第一个“index”是执行控制器(Action Controller)的名字,第二个“index”是执行方法的名字。对比我们写的执行 控制器代码,我们不难发现执行方法的定义是执行方法名字加上 “Action”关 键字 public function indexAction(){…} Magento 根据命名规则找到执行控制器文件并实例化,然后再根据命名规则调用 指定的执行方法。
如果 URL 没有给出执行控制器名字或者执行方法,Magento 会 用默认的“index”来替代,
所以下面三个 URL 是等价的
http://exmaple.com/test/index/index
http://exmaple.com/test/index
http://exmaple.com/test
我们再来看一个例子。
如果 URL 如下 http://exmaple.com/checkout/cart/add
Magento 的执行步骤如下
- 查询全局配置,找到 frontName“checkout”对应的模块,Mage_Checkout
- 找到执行控制器 “Mage_Checkout_CartController”
- 调用执行控制器的“addAction”方法
联系我:798932948@qq.com