如何使用Twig和Symfony2创建一个确认框以将用户重定向到页面

时间:2013-02-06 22:04:15

标签: php javascript symfony twig confirm

当按下删除按钮时,我想要弹出警报以确保用户没有犯错误。

所以,在codeIgniter中我有这个效果很好:

按钮:

<td><a class='Right btn btn-danger' onClick="ConfirmMessage('news', <?php echo $new->id ?>,'news')">
                        <i class="icon-remove-sign icon-white"></i>
                    </a></td>

使用Javascript:

function ConfirmMessage(type, id, types) {
    if (confirm("Are you sure you want to delete this "+type+" ?")) { // Clic sur OK
     document.location.href='<?php echo site_url(); ?>/'+types+'/delete/'+id;
    }
  }

但是现在,使用Symfony2,我不能这样做:

按钮

<td><a class='Right btn btn-danger' onClick="ConfirmMessage('artist', {{ artist.id }},'news')">
                            <i class="icon-remove-sign icon-white"></i>
                        </a></td>

的Javascript

function ConfirmMessage(type, id, types) {
    if (confirm("Are you sure you want to delete this "+type+" ?")) { // Clic OK
        document.location.href="{{ path('ymtest_Delete'"+types+", {'id': "+id+"}) }}";
    }
}

因为我在Symfony想要生成网址时收到错误。

什么是解决方案? 感谢

1 个答案:

答案 0 :(得分:4)

你不能写

 document.location.href="{{ path('ymtest_Delete'"+types+", {'id': "+id+"}) }}";

你正在混合twig函数和javascript函数。 Twig将在后端进行解析和编译 收到html页面后,Javascript将在您的客户端执行

您必须生成每个网址类型并将其分配给javascript变量。

更优雅的方法是将您的网址和邮件存储在数据属性

<a class="Right btn btn-danger" data-url="{{ path('ymtest_EditMusician', {'id': artist.id}) }}" data-message="Are you sure you want to delete this type ?" ></a>

现在,您可以使用javscript绑定事件,并检索数据属性值。没有更多的javascript测试