私はこれを理解するのに本当に苦労しています、そして今私はただ輪になって回っています。
私はできるだけ多くのマニュアルを読み、ビデオチュートリアルにお金を払い、GoogleとYouTubeを精査しましたが、これを機能させることができません。
私は単に、すべてのリクエストの前にアクティブになるリスナーを設定しようとしています。私はこれを行うことができますが、私の問題は、必要な他のさまざまな部分にアクセスできるようにすることです。
以下は例ですが、実際のコードだけがこれを理解するのに役立つと思います。
誰かが空欄に記入していただければ幸いです。これは単なる例ですが、各部分で、私が知る必要があることを説明します。
config.ymlの場合:
services:
kernel.listener.request_listener:
class: Acme\Bundle\NewBundle\EventListener\RequestListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
arguments: [ '@service_container' ]
クラス:
namespace Acme\Bundle\NewBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
***do I need to 'use' any others here?***
class RequestListener
{
public function onKernelRequest($container) {
//reference to these: http://api.symfony.com/2.1/Symfony/Component/HttpKernel/Event/KernelEvent.html
$kernel =
//reference to the Request object
$request = $kernel->getRequest();
//reference to the Response object
$response =
//options:
// (1) continue to run usual content
// (2) stop execution and output a message
// (3) set cookie and continue to run usual content
switch( $request->query->get('option') ) {
case 1:
return
case 2:
$this->setResponse("hello, message here");
break;
case 3:
// *** not sure if this is the way to do it ***
$response->headers->setCookie(new Cookie("test", 1));
break;
}
}
}