我想将javascript中声明的var插入到我的路径中以重定向我的页面。
我的代码是:
var id = $(this).attr('data-id');
windows.location = {{ path("mylink", {id: id}) }};
但我不知道如何将我的var id插入到路径中,因为当我尝试这个时我会收到错误,我试图用+'来解析它。 myvar' +所以连接文字,但我不能。
如何将我的var连接或添加到路径中?
谢谢!
答案 0 :(得分:1)
因为PHP是在服务器端执行的,所以你需要通过这种方式绕过:
var id = $(this).attr('data-id');
var path = {{ path("mylink", {id: 0420}) }};
windows.location = path.replace("0420", id);
答案 1 :(得分:0)
有一种方法可以在不使用javascript replace
功能的情况下执行此操作。但是,它需要一些工作。
创建Twig
扩展名以解码网址:
namespace AppBundle\Twig\Extension;
class UrlDecodeExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('url_decode', array($this, 'UrlDecodeFilter'))
);
}
public function UrlDecodeFilter($url)
{
return urldecode($url);
}
public function getName()
{
return 'url_decode_extension';
}
}
注册新的扩展程序:
url_decode_extension:
class: AppBundle\Twig\Extension\UrlDecodeExtension
tags:
- { name: twig.extension }
最后,在Twig
模板中使用它:
var id = $(this).attr('data-id');
windows.location = {{ path("mylink", {id: "%s"}) | url_decode | format('"+id+"') | raw }};
这是在浏览器中呈现的方式:
var id = $(this).attr('data-id');
window.location("/your/rendered/url/"+id+"");
答案 2 :(得分:0)
您应该考虑使用FOSJsRoutingBundle。它是最常用的捆绑包之一。它的唯一目的是将您想要的路线暴露给客户端。安装后,您的代码将是:
var id = $(this).attr('data-id');
windows.location = Routing.generate("mylink", {id: id});