访问模块中的controller

magento与别的框架的不同之处之一:路由规则通过xml文件进行配置
参考:《深入理解magento 第二章》

#controller文件
之前我们新成立的Nano公司建了如下的模块,

完善一下HelloWorldController

magento-practise.local/app/code/local/Nano/App/controllers/HelloWorldController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//自己定义的前台的控制器都应继承Mage_Core_Controller_Front_Action
//类名称的格式为:模块名字空间_模块名称_controller名称
class Nano_App_HelloWorldController extends Mage_Core_Controller_Front_Action
{
//默认控制器
public function indexAction()
{
echo '默认的action,如果没有指定action的话就会访问它';
}
public function sayAction()
{
echo "Hello World!";
}
}

如何访问controllers下的HelloWorldController.php呢?

#修改模块配置文件的路由规则
编辑app\etc\config.xml

magento-practise.local/app/code/local/Nano/App/etc/config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0"?>
<config>
<modules>
<Nano_App>
<version>0.0.1</version>
</Nano_App>
</modules>
<frontend><!--frontend是网站前台,admin是网站后台,install是magento的安装程序-->
<routers>
<Nano_App><!--路由的标识,要唯一 -->
<use>standard</use>
<args>
<module>Nano_App</module><!--模块-->
<frontName>app</frontName><!--在url中通过app就可以访问到Nano_App-->
</args>
</Nano_App>
</routers>
</frontend>
</config>

同样,清除magento的缓存使得配置文件生效之后,我们在浏览器上请求
jim.practise.com/index.php/app/helloWorld/say
那么就会访问到HelloWorldController下的sayAction
而请求

jim.practise.com/index.php/app/helloWorld

jim.practise.com/index.php/app/helloWorld/index
就会访问到HelloWorldController下的indexAction

注:本地域名需要根据本地电脑的配置进行替换,jim.practise.com是我本地配置的域名,指向项目文件的根目录

文章目录