Класс Request
Класс Request инкапсулирует все данные HTTP-запроса:
параметры строки запроса, тело запроса, заголовки,
cookies, файлы и серверные переменные. Объект создаётся
автоматически при обработке запроса и доступен в
контроллере через аргумент метода. Рассмотрим его
основные возможности на примерах.
Синтаксис
use Symfony\Component\HttpFoundation\Request;
public function index(Request $request): Response
{
$value = $request->get('key');
}
Пример
Давайте получим объект Request в контроллере
и выведем значение GET-параметра name:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$name = $request->get('name');
return new Response($name);
}
}
?>
Результат выполнения кода для адреса /article?name=abcde:
abcde
Пример
Давайте определим HTTP-метод запроса с помощью
метода getMethod:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$method = $request->getMethod();
return new Response($method);
}
}
?>
Результат выполнения кода:
"GET"
Пример
Давайте получим IP-адрес клиента с помощью метода
getClientIp:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$ip = $request->getClientIp();
return new Response($ip);
}
}
?>
Результат выполнения кода:
"127.0.0.1"
Пример
Давайте проверим, является ли запрос AJAX-запросом,
с помощью метода isXmlHttpRequest:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$res = $request->isXmlHttpRequest();
return new Response($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"false"
Смотрите также
-
метод
get,
который возвращает параметр из запроса -
метод
getMethod,
который возвращает HTTP-метод запроса -
метод
getClientIp,
который возвращает IP-адрес клиента -
класс
Request,
который представляет HTTP-запрос