我有一个 new.html.twig,我在此页面上使用了一些 ajax 调用来处理下拉列表的更改事件。
因此,我创建了一个名为 new.js 的独立 js 文件,并将所有 JavaScript 代码保存在该文件中,而不是将其写入同一 View 文件中。
但是在这个js文件中我无法访问称为ajax请求的路由路径。关于更改事件。
===========New.twig.html=====================
include(new.js);
<select><name='a' onchange="setLabel('123')"></select>
============new.js.=============
function setLabel(voucherTypeID) {
queryString = "voucherTypeID=" + voucherTypeID;
$('#loading-image').show();
$.ajax({
type: "POST",
url: "{{path('vouchergeneration_getLedgers')}}", //THIS PATH How TO GET
data: queryString,
cache: "false",
dataType: "html",
success: function (data){
});
所以在这里我无法访问 URL 路径,而之前可以在 twig 文件中访问它。请指导我如何解决这个问题。我不想使用任何类型的 bundle 来完成这项简单的工作..提前致谢..
最佳答案
有一个非常简单的 bundle 可以完成这项简单的工作 FOSJsRoutingBundle
启用此 bundle 后,您只需执行以下操作
Routing.generate('my_route_to_expose', { id: 10 }); // will result in
/foo/10/bar
Routing.generate('my_route_to_expose', { id: 10, foo: "bar" }); //
will result in /foo/10/bar?foo=bar
$.get(Routing.generate('my_route_to_expose', { id: 10, foo: "bar" }));
// will call /foo/10/bar?foo=bar
Routing.generate('my_route_to_expose_with_defaults'); // will result
in /blog/1
Routing.generate('my_route_to_expose_with_defaults', { id: 2 }); //
will result in /blog/2
Routing.generate('my_route_to_expose_with_defaults', { foo: "bar" });
// will result in /blog/1?foo=bar
Routing.generate('my_route_to_expose_with_defaults', { id: 2, foo:
"bar" }); // will result in /blog/2?foo=bar
编辑: 当然,你可以不使用 bundle (我认为这不是一个好主意)。在这种情况下,我建议在 Controller 的操作中设置路由,并在 Twig 模板中使用它来设置 js 变量。像这样的东西:
Controller :
public function indexAction()
{
return array('yourRoute' => $router->generate('yourRoutName'));
}
您的模板:
<script type="text/javascript">
var yourRoute = '{{yourRoute}}';
</script>
你的js:
(...)
url: yourRoute,
(...)
关于php - 如何获取js文件中的路由路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896533/