1

Symfony2 で各ページの読み込み時にコントローラー関数を呼び出す方法はありますか? 現時点では、私のソリューションは ajax 呼び出しを使用していますが、バックエンド部分でこれをすべて解決したいと考えています。(もちろん、各コントローラー関数の関数名をコピーする必要はありません)

4

1 に答える 1

1

here で説明されているように、(フィルターの前に) イベントを作成Event Listenerして処理できます。KernelEvents::CONTROLLER


Acme\DemoBundle\EventListener\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\Resources\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 }
于 2013-07-02T07:14:07.823 に答える