对于一个项目,我为每个捆绑包都使用FOSrestbundle,我有一个ApiBundle,其中每条路线都由ajax调用。 在每次操作中,我都会执行此检查:
if $request->isXmlHttpRequest() {
throw ...
}
我正在寻找一种对整个捆绑包仅进行一次检查的方法。
谢谢
答案 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']);
}