本文实例讲述了Symfony2控制器用法。分享给大家供大家参考,具体如下:
一个controller是你创建的一个PHP函数,它接收HTTP请求(request)并创建和返回一个HTTP回复(Response)。回复对象(Response)可以是一个HTML页面,一个XML文档,一个序列化的JSON数组,一个图片,一个重定向,一个404错误或者任何你想要的内容。controller中可以包含任何渲染你页面内容的所需要的逻辑。
下面是一个controller最简单的例子,仅仅打印一个Hello world!
Controller的终极目标都是相同的那就是创建并返回一个Response对象。按照这个思路,你可以从request对象读取信息,加载数据库资源,发送email,或者在用户的Session中写入信息。但是所有情况下,Controller将最终都会返回一个Response对象并被分发会客户端。
比如如下情况:
Controller A 准备一个Response对象来表现网站homepage内容。 Controller B 从Request中读取slug参数从数据库中加载一个blog内容并创建一个Response对象来显示这个blog。如果slug在数据库中不存在,它将创建并返回一个带有404状态码的Response对象.
Controller C 处理一个从联系表单,它从Request对象中读取表单信息,保存联系信息到数据库并发邮件给管理员。最后,它创建一个Response对象重定向客户端浏览器到联系表单感谢页面。
Requests,Controller,Response的生命周期
Symfony2项目中处理的每一个Request都是经过了相同的简单生命周期。框架负责重复的任务,最终执行一个controller,该controller会包含你的应用程序代码:
1.每个Request都会被一个统一的前端控制器文件(比如,app.PHP,或者app_dev.PHP)处理,它会启动应用程序。 2.Router从Request中读取URI信息,并找到匹配它的Route,从该Route中读取_controller参数。 3.匹配成功的route的controller被执行,controller中的代码创建并返回一个Response对象。 4.HTTP头和生成的Response对象内容将会被发回客户端。
创建一个页面跟创建一个controller一样容易,创建一个路由来映射一个URL到该controller。
注意:尽管从名字上来看,前端控制器和controller差不多,其实它们是不同的。 一个前端控制器是一个存放于web目录下的PHP文件,多有的Request都会通过它被重定向。每一个应用程序都会有一个产品前端控制器app.PHP和一个开发用的前端控制器app_dev.PHP。你不需要编辑,查看或者担心它们。
看一个简单的Controller: 任何的PHP可调用内容(比如函数,对象方法或者一个Closure)都可以成为一个controller。Symfongy2中,一个controller通常为controller对象中一个单一的方法。Controllers通常也被称为actions。