Ошибка ответа на перенаправление Symfony

Я получил эту ошибку при попытке перенаправить на другой метод

Type error: Argument 1 passed to Symfony\Component\HttpFoundation\ResponseHeaderBag::__construct() must be of the type array, integer given, called in /proyect/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Response.php on line 199

Но я отправляю пустой массив

return new RedirectResponse('persons', array(), UrlGeneratorInterface::RELATIVE_PATH);

Любая помощь?

Если вы находитесь в контроллере, вы, вероятно, захотите использовать return $ this-> redirectToRoute ('people'); В противном случае RedirectResponse :: __ construct (? String $ url, int $ status = 302, array $ headers = array ())

Cerad 12.04.2018 14:25

Это хороший ответ, но что делать, если нужен относительный путь?

Braian Mellor 12.04.2018 14:37

Затем вы передаете ему относительный URL-адрес. Классу все равно. И еще раз, если вы находитесь в контроллере, используйте $ this-> generateUrl (), который дает вам возможность абсолютного или относительного.

Cerad 12.04.2018 14:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
3 389
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это класс HttpFoundation\RedirectResponse? Ваш экземпляр выглядит неправильно.

// Symfony\Component\HttpFoundation\RedirectResponse

public function __construct($url, $status = 302, $headers = array())
{
    ...
}

Ваш третий параметр - целое число, когда ожидается массив. Конструктор RedirectResponse вызывает своего родителя, конструктор Response, и выполняется этот код:

// Symfony\Component\HttpFoundation\Response

public function __construct($content = '', $status = 200, $headers = array())
{
    $this->headers = new ResponseHeaderBag($headers);
    ...
}

Это ваша ошибка, вы используете целое число (UrlGeneratorInterface::RELATIVE_PATH, равно 2), когда ожидаемое значение представляет собой массив заголовков ответов.

Как ответил @Cerad, правильным решением является использование метода redirectToRoute, но он перенаправит вас на абсолютный путь:

return $this->redirectToRoute('persons', array());

Или, если вы все еще хотите использовать RedirectResponse с относительным путем:

$url = $this->generateUrl('persons', array(), UrlGeneratorInterface::RELATIVE_PATH);

return new RedirectResponse($url);

Другие вопросы по теме