- 创建一个 test 模快
- 为这个模块配置路由
为这个模块配置执行控制器
首先在app/code/local下建好模块的骨架,也就是按magento规则创建的模块所需的文件目录
文件夹的命名规则为: app/code/local/Packagename/Modulename
所以创建的目录结如下:
app/code/local/Jeffry/Test/Block
app/code/local/Jeffry/Test/controllers
app/code/local/Jeffry/Test/etc
app/code/local/Jeffry/Test/Helper
app/code/local/Jeffry/Test/Model
app/code/local/Jeffry/Test/sql
然后在app/code/local/Jeffry/Test/etc下创建config.xml文件,并为模块分配路由
编辑config文件
<config>
<modules><!-- 模块版本信息-->
<Jeffry_Test>
<version>0.1</version>
</Jeffry_Test>
</modules>
<frontend><!--定义magento区 frontend网站前台-->
<routers><!--<routers>标签有时候包含的是路由对象的定义,有时候包含的是路径的定义。路由对象是进行路由操作的实体,而路径仅仅是路由对象的一个参数-->
<test>
<use>standard</use><!--使用标准固定写法-->
<args>
<module>Jeffry_Test</module><!-- 模块全名 定义你的模块文件-->
<frontName>test</frontName><!-- 模块名称(此处仅支持小写)-->
</args>
</test>
</routers>
</frontend>
</config>
再创建一个系统配置文件来激活这个模块 app/etc/modules/Jeffry_Tese.xml
<config>
<modules>
<Jeffry_Test>
<active>true</active>
<codePool>local</codePool>
</Jeffry_Test>
</modules>
</config>
检查模块是否已激活
- 清空 Magento 缓存
- 在管理后台,进入 System->Configuration->Advanced
- 展开“DisableModulesOutput”
确认 Goglobalis_Test显示出来了
最后要创建一个执行控制器
app/code/local/Jeffry/Test/controllers/indexController.php
<?php
//我们自己定义的属于 frontend 区的执行控制器都应该继承 Mage_Core_Controller_Front_Action
class Jeffry_Test_indexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo 'Hello Word!';
}
}
这里执行控制器的命名规则如下
- 以moudule标签的内容开始 (Jeffry_Test)
- 紧接一个下划线 (Jeffry_Test_)
- 加上我们给控制器取的名字“Index”(Jeffry_Test_Index)
- 最后加上关键词“Controller” (Jeffry_Test_IndexController)
我们自己定义的属于frontend区的执行控制器都应该继承Mage_Core_Controller_Front_Action。
URL里面的index/index是什么意思?
正如前文所述,Magento默认的路由的规则如下
http://example.com/frontName/actionControllerName/actionMethod/
所以在我们请求的URL
http://localhost/porto/index.php/test/index/index
其中“test”是“frontName”,第一个“index”是执行控制器(Action Controller)的名字,第二个“index”是执行方法的名字。对比我们写的执行控制器代码,我们不难发现执行方法的定义是执行方法名字加上“Action”关键字
public function indexAction(){…}
Magento根据命名规则找到执行控制器文件并实例化,然后再根据命名规则调用指定的执行方法。如果URL没有给出执行控制器名字或者执行方法,Magento会用默认的“index”来替代。
现在我们访问:http://localhost/porto/index.php/test/index/index可以看到空白页面上显示Hello World!
至此test模块创建完毕。
ps:
1、在创建模块时参考了一些网上的文档,大体上还是比较顺利,但是还是遇到了一些小问题。在安装magento时到连接数据库时在web option选项设置里的base url一直不正确,最后设为http://127.0.0.1/porto才正确
2、在访问执行控制器时按照文档中的url为http://exmaple.com/helloworld/index/index但是一直是无法连接服务器,最后通过查资料改为http://localhost/porto/index.php/test/index/index后可正常访问执行控制器。