こんにちは、リクエストに応答を送信する前に EventListener を作成しました。だから、これは私の EventListener です:
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpFoundation\Session\Session;
use Doctrine\ORM\EntityManager;
class RequestListener {
private $em;
private $session;
public function __construct(EntityManager $em, Session $session) {
$this->em = $em;
$this->session = $session;
}
public function onKernelController(FilterControllerEvent $event) {
$repo=$this->em->getRepository("AppBundle:FlashMessage");
$repo->addFlashMessage("test","content");
}
}
そしてそれを私のサービスに追加します:
</services>
<service id="app.request.listener" class="AppBundle\EventListener\RequestListener">
<argument type="service" id="doctrine.orm.entity_manager"/>
<argument type="service" id="session" />
<tag name="kernel.event_listener" event="kernel.controller" />
</service>
</services>
すべてが正常に機能します。でも元気すぎる!実際、Web ブラウザーからの各要求で、データベース テーブルに 2 つのエントリが作成されます (メソッド onKernelController は、要求ごとに 2 回実行されるようです)。では、なぜリクエストごとに 2 つのエントリが作成されるのでしょうか?
編集: php bin/console debug:event-dispatcher| grep -i AppBundle は私に与えます:
#1 AppBundle\EventListener\RequestListener::onKernelController() 0