- Symfony 教程
- Symfony - 主页
- Symfony - 简介
- Symfony - 安装
- Symfony - 架构
- Symfony - 组件
- Symfony - 服务容器
- Symfony - 事件和事件监听器
- Symfony - 表达
- Symfony - 捆绑包
- 创建一个简单的 Web 应用程序
- Symfony - 控制器
- Symfony - 路由
- Symfony - 视图引擎
- Symfony - Doctrine ORM
- Symfony - 表单
- Symfony - 验证
- Symfony - 文件上传
- Symfony - Ajax 控制
- Cookie 和会话管理
- Symfony - 国际化
- Symfony - 日志记录
- Symfony - 电子邮件管理
- Symfony - 单元测试
- Symfony - 高级概念
- Symfony - REST 版
- Symfony - CMF 版
- 完整的工作示例
- Symfony 有用资源
- Symfony - 快速指南
- Symfony - 有用的资源
- Symfony - 讨论
Symfony - 控制器
控制器负责处理进入 Symfony 应用程序的每个请求。控制器从请求中读取信息。然后,创建响应对象并将其返回给客户端。
根据 Symfony 的说法,DefaultController类位于“src/AppBundle/Controller”。它的定义如下。
默认控制器.php
<?php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class DefaultController extends Controller { }
这里,HttpFoundation组件为 HTTP 规范定义了一个面向对象的层,而 FrameworkBundle包含了大部分“基础”框架功能。
请求对象
Request 类是 HTTP 请求消息的面向对象表示。
创建请求对象
可以使用createFromGlobals()方法创建请求。
use Symfony\Component\HttpFoundation\Request; $request = Request::createFromGlobals();
您可以使用全局模拟请求。您还可以模拟请求,而不是基于 PHP 全局变量创建请求。
$request = Request::create( '/student', 'GET', array('name' => 'student1') );
这里,create()方法基于 URI、方法和一些参数创建请求。
重写请求对象
您可以使用overrideGlobals()方法覆盖 PHP 全局变量。它的定义如下。
$request->overrideGlobals();
访问请求对象
可以使用基本控制器的getRequest()方法在控制器(操作方法)中访问网页请求。
$request = $this->getRequest();
识别请求对象
如果你想标识你的应用程序中的一个请求,“PathInfo”方法将返回请求url的唯一标识。它的定义如下。
$request->getPathInfo();
响应对象
对控制器的唯一要求是返回一个 Response 对象。Response 对象保存来自给定请求的所有信息并将其发送回客户端。
下面是一个简单的例子。
例子
use Symfony\Component\HttpFoundation\Response; $response = new Response(‘Default'.$name, 10);
您可以按如下方式在 JSON 中定义 Response 对象。
$response = new Response(json_encode(array('name' => $name))); $response->headers->set('Content-Type', 'application/json');
响应构造函数
构造函数包含三个参数 -
- 回复内容
- 状态码
- HTTP 标头数组
以下是基本语法。
use Symfony\Component\HttpFoundation\Response; $response = new Response( 'Content', Response::HTTP_OK, array('content-type' => 'text/html') );
例如,您可以将内容参数传递为:
$response->setContent(’Student details’);
同样,您也可以传递其他参数。
发送响应
您可以使用send()方法向客户端发送响应。它的定义如下。
$response->send();
要将客户端重定向到另一个 URL,您可以使用RedirectResponse类。
它的定义如下。
use Symfony\Component\HttpFoundation\RedirectResponse; $response = new RedirectResponse('http://tutorialspoint.com/');
前端控制器
处理进入应用程序的每个请求的单个 PHP 文件。FrontController 执行将不同 URL 路由到应用程序内部不同部分的操作。
以下是 FrontController 的基本语法。
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $request = Request::createFromGlobals(); $path = $request->getPathInfo(); // the URI path being requested if (in_array($path, array('', '/'))) { $response = new Response(’Student home page.'); } elseif (‘/about’ === $path) { $response = new Response(’Student details page’); } else { $response = new Response('Page not found.', Response::HTTP_NOT_FOUND); } $response->send();
这里,in_array()函数在数组中搜索特定值。