如果 $request->isXmlHttpRequest,如何检查一次整个包?

How to check once for a whole bundle if $request->isXmlHttpRequest?

对于一个项目,我对每个包都使用 FOSrestbundle,并且我有一个 ApiBundle,其中每个路由都由 ajax 调用。 在每个动作中,我都会检查:

if $request->isXmlHttpRequest() {
    throw ...
}

我正在寻找一种方法,只对整个包进行一次检查。

谢谢

我在这里为那些想做同样事情的人提供了一个解决方案

在 ApiBundle 的每个控制器中,我放置了这个注解以确保每个路由名称具有相同的 'api_' 前缀

/**
 * Class SomeController.
 *
 * @Route("/some", name="api_")
 */
class SomeController extends Controller

在请求事件侦听器中,我将此检查放在 KernelEvents::REQUEST 事件上

$request = $event->getRequest();

if (!$event->isMasterRequest()) {
    return;
}

if ('api_' === substr($request->get('_route'), 0, 4) && !$request->isXmlHttpRequest()) {
    throw new MethodNotAllowedException(['ajax']);
}