我写了一个基于 symfony 的网站。有一些弹出窗口(注册、登录、更改密码)。我只需通过请求http://example.com/module/action即可使用 jQuery AJAX 请求 ($.get) 加载它们。尽管弹出窗口正确加载了 html,但http://example.com/module/action上没有正常请求的脚本。
有人知道如何禁用这个 symfony 功能吗?或者知道优雅的解决方法?
我写了一个基于 symfony 的网站。有一些弹出窗口(注册、登录、更改密码)。我只需通过请求http://example.com/module/action即可使用 jQuery AJAX 请求 ($.get) 加载它们。尽管弹出窗口正确加载了 html,但http://example.com/module/action上没有正常请求的脚本。
有人知道如何禁用这个 symfony 功能吗?或者知道优雅的解决方法?
为您的路线添加限制:
route_name:
url: route_path.:sf_format
# sf_format: json sets default format to json
param: { module: module_name, action: action_name, sf_format: json }
# add restrictions
requirements:
sf_format: json
由 Pedro @pedro-casado 提供的解决方案非常好(我在以前的一些项目中使用过),但一段时间后,我意识到,正确的方法是对路线添加限制。这样,Symfony 会简单地拒绝所有请求,除了 XmlHttpRequest。
您是否希望仅在通过 ajax 调用时才加载页面?
if ($request->isXmlHttpRequest())
{
....
}