Попытка вызвать неопределенный метод с именем «redirect» error в Synfony 4 - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть эта ошибка в моем коде, и я пишу "use", но у меня есть эта ошибка:

Попытка вызова неопределенного метода с именем "redirect" класса "App \ Controller \ SetlocaleController".

Мой код:

<?php 

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\RedirectResponse;

class SetlocaleController extends HomeController {

    public function __construct(\Twig\Environment $twig)
    {
        $this->twig = $twig;
    }

    public function setLocaleAction(Request $request, $language = null)
    {
        if($language != null)
        {
            $session->set('_locale', $language);
        }

        $url = $request->headers->get('referer');
        if(empty($url))
        {
            return new response($this->twig->render('page/home.html.twig'));
        }
        else{
            return $this->redirect($url);
        }
    }
}

У вас есть ответ для меня, пожалуйста?

1 Ответ

1 голос
/ 09 апреля 2019

Лучшее практическое решение

В соответствии с рекомендациями Symfony, приведенными в рекомендациях по документации контроллеров, убедитесь, что вы расширяете абстрактный контроллер на своем контроллере.

// HomeController.php

// ...
class HomeController extends AbstractController {
// ...

Никаких дополнительных изменений не требуется SetlocaleController. Однако, если RedirectResponse больше не используется, вы можете удалить его импорт use Symfony\Component\HttpFoundation\RedirectResponse;


Решение с использованием HttpFoundation \ RedirectResponse

Вам необходимо использовать уже импортированный RedirectResponse объект. Не используйте код: return $this->redirect($url);, поскольку, как говорится в сообщении об ошибке, для вашего класса не определена функция redirect(url).

return new RedirectResponse($url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...