2013-07-02 76 views
1

Symfony2有没有在每次页面加载时调用控制器功能的方法?在该解决方案中,我的解决方案是使用ajax调用,但我希望在后端部分解决这一切。 (当然,不必复制每个控制器功能上的功能名称)在每次页面加载时执行控制器的功能

回答

1

您可以创建Event Listener并处理KernelEvents::CONTROLLER事件(在过滤器之前),如described here


的Acme \ DemoBundle \事件监听\ DemoListener.php

namespace Acme\DemoBundle\EventListener; 

use Symfony\Component\HttpKernel\Event\FilterControllerEvent; 

class DemoListener 
{ 
    public function onKernelController(FilterControllerEvent $event) 
    { 
     $controller = $event->getController(); 

     /* 
     * $controller passed can be either a class or a Closure. 
     * This is not usual in Symfony2 but it may happen. 
     * If it is a class, it comes in array format 
     */ 
     if (!is_array($controller)) { 
      return; 
     } 

     $controller[0]->fooBarMethod(); 
    } 
} 

的Acme \ DemoBundle \资源\ services.yml

parameters: 
    acme_demo.event_listener.class: Acme\DemoBundle\EventListener\DemoListener 
services: 
    acme_demo.event_listener: 
     class: %acme_demo.event_listener.class% 
     tags: 
      - { name: kernel.event_listener, event: kernel.controller, method: onKernelController } 
相关问题