Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1342968
  • 博文数量: 118
  • 博客积分: 3888
  • 博客等级: 中校
  • 技术积分: 2940
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 18:15
个人简介

一看二做三总结

文章分类

全部博文(118)

分类: LINUX

2015-03-27 17:02:03


文章太好了,绝对是zf2入门的最佳教程。排版也太好了,这里就转载下我看过的第四章

地址:http://blog.csdn.net/lai1362000/article/details/19421017

第4 章 创建控制器

4.1 控制器简介

控制器是ZF2的核心功能,其实现了前端控制器所需的全部接口。如:路由分发、视图渲染、助手、请求、响应等一系列的功能。同时也可以利用继承来设计自已的助手类或一些实用性较的插件等,来加强自已的系统功能。

4.2 新建控制器

在ZF2中,控制器是 一个类通常称为{控制器名称}控制器。 请注意,{控制器名称}必须以大写字母开头。这个类保存在控制器模块目录内以名为{控制器名称}控制器类.php的文件中。 控制器的每个操作都是在一个公共方法内的{动作名称}中完成。一般情况下{动作名称}是以小写字母开头。

 
根据前面章节的相关设置,当前项目中的所有控制器都将放在 /module/Application/src/Application/Controller 的目录下;在本章节及接下来的几个章节都以一个新闻系统来对相关的知识内容来进行讲解。

现在添加一个控制器,在控制器目录下新一个控制器 NewsController 控制器,路径:/module/Application/src/Application/Controller/NewsController.php

代码如下:

class NewsController extends AbstractActionController {}

通过以上代码便创建了一个标准的控制器类,虽然些控制器只有短短的一行代码,但他拥有操作器所需的全部基本功能;因为他已经继承了 AbstractActionController 类中的全部方法。

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,那么是否就可以直接通过  来 对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 路由配置进行解释:

lnews=>array()  表示一个路由节点,此节点的路由名称为 news

lnews-->type=>segment 表示路由使用 segment 模式进行解析

lnews-->options=>array()  表示路由配置选项

lnews-->options-->route => /news[/:action] 表示路由地址

lnews-->options-->constraints=>array() 对路由约束规则,其实就是对路由的正则匹配

lnews-->options-->constraints-->action 表示 action 的匹配规则

lnews-->defaults  表示路由默认访问的配置

lnews-->defaults-->controller 表示默认使用的控制器

lnews-->defaults-->action 表示控制器默认使用的action

 

现在可以通过

         访问到 indexAction

     访问到 listAction

        访问到 addAction

    访问到 editAction

     访问到 deleteAction

 

通过以上的几个环节便 完成了ZF2中的控制器的创建和使用,由此可见ZF2的使用比较ZF1更为复杂,也可以看出路由的设置及访问方式更加的灵活。在ZF2框架中控制器、视 图、模型 是缺一不可的一个整体体系,缺失任何一个都将损害ZF2的完全性;致以本章节前面提到的要实现控制器中的增、删、改 的功能将会在视图及模型章节中加以补充。


阅读(4480) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~