Symfony控制器 Symfony创建一个简单的Web应用程序 Symfony路由 控制器负责处理Symfony应用程序中的每个请求。控制器从请求中读取信息。然后,创建响应对象并将其返回给客户端。 根据Symfony, DefaultController 类位于 “src / AppBundle / Controller” 。它被定义如下。 DefaultController.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(); 您可以使用Globals模拟请求。您可以模拟请求,而不是创建基于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://CodingDict.com/'); FrontController 一个处理每个请求进入应用程序的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() 函数在数组中搜索特定的值。 Symfony创建一个简单的Web应用程序 Symfony路由