1

こんにちは、リクエストに応答を送信する前に 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   
4

0 に答える 0