尝试在Synfony 4中调用名为“重定向”的未定义方法错误

时间:2019-04-09 15:09:58

标签: php symfony symfony4

我的代码中有此错误,我正在写“ 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 个答案:

答案 0 :(得分:1)

最佳实践解决方案

按照Symfony的控制器最佳实践文档中的建议,确保在控制器上扩展Abstract控制器。

// 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);