下面在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的完全性;致以本章节前面提到的要实现控制器中的增、删、改 的功能将会在视图及模型章节中加以补充。
- 序言
- 第1章 Zend Framework2 简介
- 1.1 Zend Framework2 简介
- 1.2 下载安装
- 1.3 搭建开发环境
- 第2章 创建ZF2项目
- 2.1 新建一个项目
- 2.2 配置网站
- 2.3 伪静态 .htaccess文件
- 2.4 添加启动/入口文件
- 2.5 添加全局配置文件
- 2.6 添加自动加载文件 init_autoloader.php
- 2.7 IndexController 控制器
- 第3章 创建模块文件
- 3.1 Module 文件
- 3.2 module.config 文件
- 3.2.1 router 路由配置
- 3.2.2 controllers控制器配置
- 3.2.3 view_manager 视图管理器
- 3.2.4 service_manager 服务管理器
- 3.2.5 translator 翻译器
- 3.2.6 navigation 导航条
- 第4章 创建控制器
- 4.1 控制器简介
- 4.2 新建控制器
- 4.3 添加控制器的Action
- 第5章 创建视图模板
- 5.1 创建模板
- 5.2 模板配置
- 5.3 编写布局和错误异常模板
- 5.4 编写Action 对应的模板文件
- 5.5 访问 IndexAction
- 第6章 创建模型
- 6.1 ORM 对象映射法
- 6.2 使用分页导航
- 6.3 自定模型
- 6.4 章节总结
- 第7章 实例应用
- 7.1 建立Album 模块
- 7.2 添加模块文件
- 7.3 添加模块配置文件
- 7.4 创建数据表 album
- 7.5 添加模型文件
- 7.6 添加表单 AlbumForm
- 7.7 添加控制器 AlbumController
- 7.8 添加模板文件
- 第8章 用户认证
- 8.1 建立数据表
- 8.2 新建认证类
- 8.3 引用认证类
- 第9章 结束语