如何在symfony2中使用来自javascript变量的链接生成器

时间:2013-06-21 12:44:38

标签: symfony twig

我正在尝试使用具有Javascript功能的链接生成器。

{% for key in values %}
<a href="#" onClick="bookConfirm('{{key}}'); return false;">click!!</a>  
{%endfor %}

function bookConfirm(key) {
    if (confirm("Is it OK?")) {
    alert("OK!!");

    location.href = "{{ path('acme_member_bookLesson',{'scheKey':key})}}";
    } else {
    alert("cancel!");
    }
}

但它显示

AcmeMemberBundle中不存在

'变量'键“:默认:第19行的show.html.twig

我该如何解决这个问题?使用Javascript和链接生成器有点复杂。

1 个答案:

答案 0 :(得分:2)

编辑:第二个key不在循环中,这意味着它将始终具有最后一个循环的值。您将key的值作为参数输出到JavaScript函数。第二个key值不是javascript函数的键值,而是twig中的键值。为什么会这样,如何修复它可以在我的原始答案中阅读:

Twig是一个用PHP编写的模板引擎。这意味着它在服务器端运行并在代码中输出文本。然后将代码发送到浏览器,浏览器解析并呈现/执行HTML,CSS和JavaScript代码。

所以用JavaScript执行一些twig代码是不可能的。

但是,您只需使用FosJsRoutingBundle修复代码即可。该捆绑包完全符合它的说法,它可以在JavaScript中处理客户端的大多数Symfony路由功能。

您的代码将变为:

function bookConfirm(key) {
    if (confirm("Is it OK?")) {
        alert("OK!!");

        location.href = Routing.generate('acme_member_bookLesson', { key: key });
    } else {
        alert("cancel!");
    }
}

their docs

中详细了解相关信息