Метод duplicate
Метод duplicate класса Request создаёт новый объект запроса, копируя данные из текущего. Первым параметром передаётся массив параметров запроса (query), вторым - массив данных тела запроса (request), третьим - массив атрибутов, четвёртым - массив cookies, пятым - массив файлов, шестым - массив серверных переменных. Если параметр равен null, соответствующая часть запроса копируется без изменений.
Синтаксис
public function duplicate(
array $query = null,
array $request = null,
array $attributes = null,
array $cookies = null,
array $files = null,
array $server = null
): static
Пример
Давайте создадим копию запроса и изменим в ней параметр page:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$request->query->set('page', 1);
$newRequest = $request->duplicate(['page' => 5]);
return new Response($newRequest->query->get('page'));
}
}
?>
Результат выполнения кода:
5
Пример
Давайте скопируем запрос и добавим новый атрибут user_id:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$newRequest = $request->duplicate(null, null, ['user_id' => 42]);
return new Response($newRequest->attributes->get('user_id'));
}
}
?>
Результат выполнения кода:
42
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
get,
который возвращает параметр из query-строки -
метод
getPayload,
который возвращает тело запроса -
метод
getMethod,
который возвращает HTTP-метод запроса