0

我有一个简单的 silex 应用程序并使用许多不同的外部控制器。
我正在使用 register 和 mount 将其连接到我的应用程序。

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

它在其服务提供者类中添加路由登录、注销等:

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

我想为它提供的操作添加一个事件或中间件侦听器。

我搜索了 silex 和 symfony 文档,但没有找到简单的方法。
我曾尝试使用$app['controllers'],但这会返回一个ControllerCollection,而无法更改某些内容(或者我不明白)。

向现有的非自写控制器添加新侦听器的推荐方法是什么?

4

1 回答 1

1

同时,我发现了一种可能的方法来刷新控制器以创建RouteCollection并通过绑定名称检索它。
您将收到一个Route实例,并且可以在那里使用普通的中间件侦听器方法,例如beforeafter等等。

$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.');
});
于 2014-02-21T22:34:28.397 回答