0

このディスカッションSymfony2 Routing - route subdomainsに従って、サブドメインリスナーを作成しています

それで、このリスナーに行き、私はやりたいことをすることができます。

しかし、コントローラーの 1 つでこのリスナーを拡張することはできません。リスナーコードは次のようになります...

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

したがって、デバッグしようとすると、実際には拡張クラスを通過しますが、最後にコントローラーで get() を処理できません。

Listener のコントローラー関数にアクセスするための回避策はありますか?

4

1 に答える 1

0

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

これは、HTTP 要求と応答をより簡単に操作するための代替手段です。

于 2012-10-30T10:19:08.450 に答える