对于一个项目,我为每个捆绑使用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']);
}