2016-07-14 7 views
1

アドバイスが必要です。 今見ている記事を更新したいです。 まず、リスナーにEMを挿入します。しかし、私には思えたように、symfonyのための読み込み記事の記事IDを得るためにurlを解析してください。Symfonyがリスナーにエンティティを注入する

services: 
    app.articles.action_listener: 
     class: FrontendBundle\EventListener\ArticleListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.controller, method: onKernelController } 
     arguments: ['@doctrine.orm.entity_manager'] 

エンティティをコントローラ内で取得する方法はありますか?任意の助け

/** 
* @Route("/{id}", requirements={"page": "\d+"}, name="article_view_full") 
* 
* @param Article $article 
* 
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response 
*/ 
public function viewAction(Article $article) 

UPDATE

/** 
* Class ArticleListener 
* @package FrontendBundle\EventListener 
*/ 
    class ArticleListener 
    { 
     /** 
     * @type EntityManager 
     */ 
     private $manager; 

     /** 
     * ArticleListener constructor. 
     * 
     * @param EntityManager $manager 
     */ 
     public function __construct(EntityManager $manager) 
     { 
      $this->manager = $manager; 
     } 

     /** 
     * @param $event 
     */ 
     public function onKernelController($event) 
     { 

      $controller = $event->getController(); 

      if (!is_array($controller)) { 
       return; 
      } 

      if ($controller[0] instanceof ArticlesController && $controller[1] == 'viewAction') { 
       // THIS IS THE FULL ARTICLE VIEW. HERE I NEED TO GET CURRENT ARTICLE INSTANCE AND UPDATE VIEWS COLUMN IN DB. 
      } 
     } 
    } 

Thxを。

+0

ArticleListenerを見ることはできますか?なぜこのリスナーのエンティティを更新しないのですか? –

答えて

0

あなたは引数

arguments: ['@doctrine.orm.entity_manager','@service_container'] 

としてサービスコンテナを解析し、パラメータを取得することができます...

public function __construct($em, Container $container ) { 
    $this->em = $em; 
    $this->container = $container; 
    $rq     = $this->container->get('request_stack'); 
    $rq     = $rq->getCurrentRequest(); 
    $parameters   = explode('/', $rq->getRequestUri()); 

あなたもイベントからの要求を取得することができます。

$request = $event->getRequest(); 
+0

私はsymfonyのやり方ではないと思います.... – Tapakan

関連する問題