4.3 添加控制器的Action

最后更新于:2022-04-01 00:40:45

下面在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的完全性;致以本章节前面提到的要实现控制器中的增、删、改 的功能将会在视图及模型章节中加以补充。
';