是否可以仅限制 AJAX 的路由?
是否可以仅限制 XHR 请求的 Symfony 2 路由?我想声明只能通过AJAX访问的路由。
我不想在每个特定于AJAX的操作中加入一些额外的行,如下所示:
if ($request->isXmlHttpRequest()) {
// do something
} else {
// do something else
}
我想定义:
- AJAX 请求的一个规则
- 一个规则,用于将请求发送到同一 URL
为了绕过像上面这样的条件。
是否可以仅限制 XHR 请求的 Symfony 2 路由?我想声明只能通过AJAX访问的路由。
我不想在每个特定于AJAX的操作中加入一些额外的行,如下所示:
if ($request->isXmlHttpRequest()) {
// do something
} else {
// do something else
}
我想定义:
为了绕过像上面这样的条件。
我知道这个问题有点旧,但与此同时,在Symfony 2.4中引入了一种新的实现方式。
对于 ajax 限制,它看起来像这样:
contact:
path: /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
condition: "request.isXmlHttpRequest()"
也可以在注释中:
/**
* ContactAction
*
* @Route("/contact", name="contact", condition="request.isXmlHttpRequest()")
*/
我的建议是定义您自己的路由器服务而不是默认值,这将从 扩展而来,并通过实现您自己的逻辑来处理其他要求来重新定义方法 resolveParameters()。Symfony\Bundle\FrameworkBundle\Routing\Router
然后,您可以在路由中执行如下操作:
your_route:
pattern: /somepattern
defaults: { somedefaults }
requirements:
_request_type: some_requirement