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

时间:2018-09-03 12:10:24

标签: ajax fosrestbundle symfony-3.4

对于一个项目,我为每个捆绑包都使用FOSrestbundle,我有一个ApiBundle,其中每条路线都由ajax调用。 在每次操作中,我都会执行此检查:

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

我正在寻找一种对整个捆绑包仅进行一次检查的方法。

谢谢

1 个答案:

答案 0 :(得分:0)

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

在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']);
}