如果 $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']);
}
对于一个项目,我对每个包都使用 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']);
}