2014-02-21 49 views
0

我有一個簡單的silex應用程序,並使用了很多不同的外部控制器。
我正在使用註冊和掛載來連接到我的應用程序。如何將事件偵聽器添加到來自外部控制器的操作?

$app->register($externalController = new ExternalController()); 
$app->mount('/control', $externalController); 

它增加了路由登錄,註銷等在其服務提供商類:

$controllers->get('/start', 'user.controller:loginAction') 
    ->bind('control.start'); 

我想一個事件或中間件監聽器添加到其所提供的行動。

我已經搜索了silex和symfony文檔,但我沒有找到一個簡單的方法。
我試圖使用$app['controllers'],但這返回ControllerCollection沒有任何可能改變的東西(或我不明白它)。

將新偵聽器添加到現有非自寫控制器的建議方法是什麼?

回答

1

我發現了一種可能的方法,同時刷新控制器以創建RouteCollection並通過綁定名稱檢索它。
您將收到一個路由實例,並且可以使用那裏的普通中間件偵聽器方法,如before,after等。

$app->flush(); 
$route = $app['routes']->get('control.start'); 
$route->before(function(Symfony\Component\HttpFoundation\Request $request) use ($app) { 
    throw new RuntimeException('You should see me.'); 
}); 
相關問題