0

我正在尝试使用带有 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 中不存在变量“key”:默认值:show.html.twig 第 19 行'

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

4

1 回答 1

2

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

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

所以不可能用 JavaScript 执行一些树枝代码。

但是,您可以使用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!");
    }
}

在他们的文档中了解更多信息

于 2013-06-21T13:01:23.697 回答