我正在尝试使用具有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和链接生成器有点复杂。
答案 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!");
}
}
中详细了解相关信息