【问题标题】:How to extend Listener with controller in symfony2?如何在 symfony2 中使用控制器扩展监听器?
【发布时间】:2023-03-13 07:45:01
【问题描述】:

我正在根据此讨论创建一个子域侦听器Symfony2 Routing - route subdomains

所以它交给这个听众,我可以做我想做的事情。

但我无法使用我的一个控制器扩展此侦听器。监听器代码是这样的......

namespace Acme\FrontEndBundle\Listener;

use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;
use Acme\BraPrintBundle\Controller\BraPrintController;
use Symfony\Component\HttpFoundation\RedirectResponse;

use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class SubdomainListener extends BraPrintController
{
   public function onDomainParse(Event $event)
   {
       $request = $event->getRequest();
       $session = $request->getSession();
       echo $request->getHost();
       echo $this->isLoggedIn(); // defined in BraprintController
       // todo: parsing subdomain to detect country
       //do some auth stuff
       //$session->set('corporate', $request->getHost());
   }
}

但是当我尝试运行时它会抛出

Fatal error: Call to a member function get() on a non-object in /home/myname/myproject/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 192

因此,当我尝试调试它时,它实际上会通过扩展类,但最后在 Controller 中它无法处理 get()。

有没有办法在 Listener 中访问控制器功能?

【问题讨论】:

    标签: php symfony routing


    【解决方案1】:

    use Symfony\Component\HttpFoundation\Request;

    $request = Request::createFromGlobals();

    这是一种以更简单的方式与 HTTP 请求和响应交互的替代方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 2018-11-21
      相关资源
      最近更新 更多