📅  最后修改于: 2020-10-19 03:15:30             🧑  作者: Mango
控制器负责处理Symfony应用程序中的每个请求。控制器从请求中读取信息。然后,创建一个响应对象并将其返回给客户端。
根据Symfony的说法, DefaultController类位于“ src / AppBundle / 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对象。响应对象保存来自给定请求的所有信息,并将其发送回客户端。
以下是一个简单的示例。
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');
构造函数包含三个参数-
以下是基本语法。
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
例如,您可以将content参数传递为
$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()函数在数组中搜索特定值。