- Zend 框架教程
- Zend 框架 - 主页
- Zend 框架 - 简介
- Zend 框架 - 安装
- 骨架应用
- Zend 框架 - MVC 架构
- Zend 框架 - 概念
- Zend 框架 - 服务管理器
- Zend 框架 - 事件管理器
- Zend 框架 - 模块系统
- 应用结构
- Zend 框架 - 创建模块
- Zend 框架 - 控制器
- Zend 框架 - 路由
- Zend 框架 - 视图层
- Zend 框架 - 布局
- 模型和数据库
- 不同的数据库
- 表格和验证
- Zend 框架 - 文件上传
- Zend 框架 - Ajax
- Cookie 管理
- 会话管理
- Zend 框架 - 身份验证
- 电子邮件管理
- Zend 框架 - 单元测试
- Zend 框架 - 错误处理
- Zend 框架 - 工作示例
- Zend 框架有用的资源
- Zend 框架 - 快速指南
- Zend 框架 - 有用的资源
- Zend 框架 - 讨论
Zend 框架 - 控制器
如前所述,控制器在 Zend MVC 框架中发挥着重要作用。应用程序中的所有网页都需要由控制器来处理。
在 Zend MVC 框架中,控制器是实现 Zend/Stdlib/DispatchableInterface 的对象。DispatchableInterface有一个方法:dispatch ,它获取Request对象作为输入,执行一些逻辑并返回Response对象作为输出。
dispatch(Request $request, Response $response = null)
返回“Hello World”的控制器对象的简单示例如下 -
use Zend\Stdlib\DispatchableInterface; use Zend\Stdlib\RequestInterface as Request; use Zend\Stdlib\ResponseInterface as Response; class HelloWorld implements DispatchableInterface { public function dispatch(Request $request, Response $response = null) { $response->setContent("Hello World!"); } }
DispatchableInterface是基本的,它需要很多其他接口来编写高级控制器。其中一些接口如下 -
InjectApplicationEventInterface - 用于注入事件(Zend EventManager)
ServiceLocatorAwareInterface - 用于定位服务(Zend ServiceManager)
EventManagerAwareInterface - 用于管理事件(Zend EventManager)
记住这些事情,Zend Framework 提供了许多实现这些接口的现成控制器。最重要的控制器如下所述。
抽象动作控制器
AbstractActionController (Zend/Mvc/Controller/AbstractActionController) 是 Zend MVC 框架中最常用的控制器。它具有编写典型网页所需的所有功能。它允许路由(路由将请求 url 匹配到控制器及其方法之一)来匹配操作。当匹配时,控制器将调用以该操作命名的方法。
例如,如果匹配了路由test并且路由test返回hello for action,则将调用helloAction方法。
让我们使用AbstractActionController编写TutorialController。
通过扩展AbstractActionController创建一个名为TutorialController的新 PHP 类,并将其放置在module/Tutorial/src/Controller/目录中。
将Tutorial\Controller设置为命名空间。
编写一个indexAction方法。
从indexAction方法返回ViewModel对象。ViewModel对象用于将数据从控制器发送到视图引擎,我们将在后续章节中看到。
完整的代码清单如下 -
?php namespace Tutorial\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class TutorialController extends AbstractActionController { public function indexAction() { return new ViewModel(); } }
我们已经成功添加了新的TutorialController。
抽象RestfulController
The AbstractRestfulController (Zend\Mvc\Controller\AbstractRestfulController) inspects the HTTP method of the incoming request and matches the action (method) by considering the HTTP methods
For example, the request with GET HTTP method either matches the getList() method or the get() method, if the id parameter is found in the request.
AbstractConsoleController
The AbstractConsoleController (Zend\Mvc\Controller\AbstractConsoleController) is like the AbstractActionController except that it only runs in the console environment instead of a browser.