4.3 添加控制器的Action
下面在NewsController控制器中添加几个 Action:
public function indexAction(){
echo "NewsController indexAction";
exit;
}
public function listAction(){
echo "NewsController listAction";
exit;
}
public function addAction(){
echo "NewsController addAction";
exit;
}
public function editAction(){
echo "NewsController editAction";
exit;
}
public function deleteAction(){
echo "NewsController deleteAction";
exit;
}
注意:ZF2控制器的action方法都必需为 public 类型,不然ZF2前端控制器可能无法访问导致出错。同时应该注意action 的名称都是动作名+Action组成的,需要注意大写(如果项目将来是布置在Linux系统的服务器上时这点就显得尤为重要)。
经过添加以上的代码就建立了NewsController 控制器中建立了5个不同的action,在此就可以利用这5个不同的action 来实现5个不同的功能。下面说明一下上面添加的5个 action 的主要作用,indexAction 为控制器的默认action ;listAction 用来实现新闻列表功能;addAction 用来实现添加新闻的功能;editAction 用来实现修改/编辑新闻功能;deleteAction 用来实现删除新闻的功能。
有了控制器及控制器的action,那么是否就可以直接通过 http://localhost/news
来对NewsController进行访问了呢?答案是否定的。在前面的章节有提到过关于路由的概念或相关的内容,ZF2 中的所有控制的访问都需要先通过对控制器路由设定才能进行使用,没有经过路由设置的控制器就相当于一部不会割草的割草机;这种路由的设定也体现了ZF2中强大的路由功能,你可以将控制器的访问路径配置成各种各样的形式,这种路由的设置模式区别于传统PHP网址路径的访问形式,传统的访问地址往往都是包括了文件名,而ZF2的路由配置规则则可完全将文件名隐藏起来。那下面就开始对 NewsController 控制器进行路由的进行设定。
找到模块配置文件 /module/Application/config/module.config.php
,打开文件并找到 router-->routes-->application 节点的未尾,在此节点的末尾添加如下代码:
'news'=>array(
'type'=>'segment',
'options'=>array(
'route'=>'/news[/:action]',
'constraints'=>array(
'action'=>'[a-zA-Z]'
),
'defaults'=>array(
'controller'=>'Application\Controller\News',
'action'=>'index'
),
),
),
注意:请确认好 application 与 news 的节点是处于同一层次
下面对 NewsController 路由配置进行解释:
-
news=>array() 表示一个路由节点,此节点的路由名称为 news
-
news-->type=>segment 表示路由使用 segment 模式进行解析
-
news-->options=>array() 表示路由配置选项
-
news-->options-->route => /news[/:action] 表示路由地址
-
news-->options-->constraints=>array() 对路由约束规则,其实就是对路由的正则匹配
-
news-->options-->constraints-->action 表示 action 的匹配规则
-
news-->defaults 表示路由默认访问的配置
-
news-->defaults-->controller 表示默认使用的控制器
- news-->defaults-->action 表示控制器默认使用的action
现在可以通过
http://localhost/news 访问到 indexAction
http://localhost/news/list 访问到 listAction
http://localhost/news/add 访问到 addAction
http://localhost/news/edit 访问到 editAction
http://localhostnews/delete 访问到 deleteAction
通过以上的几个环节便完成了ZF2中的控制器的创建和使用,由此可见ZF2的使用比较ZF1更为复杂,也可以看出路由的设置及访问方式更加的灵活。在ZF2框架中控制器、视图、模型 是缺一不可的一个整体体系,缺失任何一个都将损害ZF2的完全性;致以本章节前面提到的要实现控制器中的增、删、改 的功能将会在视图及模型章节中加以补充。