javascript - Symfony - 如何使用 Sweet Alert 使用路由进行表单提交?

标签 javascript jquery forms symfony sweetalert

编辑:我如何确认以甜蜜警报的形式提交选定的用户 ID?看,我有这个表格,显示我网页中的所有注册用户。我的问题是我不知道如何生成 Symfony 到 <button> 的路由在我的 Twig 模板中标记。我无法使用<a>标记,因为 SWAL 仅在 data-type 时执行正在使用,仅在 <button> 中可用标签,不能使用 href属性如 href="{{ path('path_to_route') }}" 。我在调用 {{ user.id }} 时也遇到问题因为它没有获取我选择的按钮的用户ID。我从各种来源获得了这段代码,但仍然有问题。急需帮助!

更新:我无法下载 FOSJsRoutingBundle,因为我们在一家有一些安装限制的公司工作,不幸的是,安装 Bundle 是其中的一部分。还有其他选择吗?

我的 Twig :

<div class="row clearfix js-sweetalert">
    <div class="btn-group" role="group">
        <button class="btn btn-warning waves-effect" data-type="cancel"><i class="material-icons">build</i></button>
        <button class="btn btn-danger waves-effect" data-type="delete-user" data-userId="{{ user.id }}"><i class="material-icons">delete</i></button>
    </div>
</div>

这是我的 Controller :

public function deleteUserAction($id)
    {
        $userManager = $this->get('fos_user.user_manager');
        $user = $userManager->findUserBy(['id' => $id]);

        if ($user ==  null) {
            throw new NotFoundHttpException('User not found for user' . $user);
        }

        $this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Unable to access this page!');

        $userManager->deleteUser($user);

        $this->setFlash('user_deleted', $user . ' has been successfully deleted!');

        $url = $this->generateUrl('fos_user_userList'); 

        return new RedirectResponse($url);
    }

这是我的甜蜜警报脚本:

$(function () {
$('.js-sweetalert button').on('click', function () {
    var type = $(this).data('type');
    if (type === 'basic') {
        showBasicMessage();
    }
    else if (type === 'delete-user') {
        var userId = $(this).data('userId');
        showDeleteUserMessage();
    }
function showDeleteUserMessage() {
    swal({
        title: "Are you sure you want to delete this user?",
        text: "You will not be able to recover this user",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "Yes, delete it!",
        closeOnConfirm: false
    }, function (isConfirm) {
        if (isConfirm) {
            var data = {id : userId};
            $.ajax({
                type: "POST",
                url: "{{ path('fos_user_deleteUser') }}",
                data: data,
                success: function(data, dataType) {
                    swal("Deleted", "The user has been removed from the Database", "Success");
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    swal("Error deleting!", "Please try again", "error");
                    }
                });
        } else {}
    });
}

最佳答案

您可以使用 FosJsRoutingBundle 在 Javascript 代码中生成路由或者将您的 js 代码移动到 twig-template 中以使用路径 twig 函数

关于javascript - Symfony - 如何使用 Sweet Alert 使用路由进行表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46189965/

相关文章:

forms - 根据项目覆盖表单渲染模板

javascript - Angular 5(Angular 2+),第二个守卫不等待第一个守卫完成http请求

javascript - 使用 jQuery 根据值对 JSON 数组进行排序

javascript - Angular如何在从服务器动态加载后编译整个jTable

javascript - 将参数传递给 JQuery 函数

javascript - 需要使用具有连接和端点的 jsplumb 验证页面

javascript - 如何将 knockout.js 与 CMS 结合使用?

javascript - 我无法找出为什么 req.param ('length' ) 返回 0

javascript - 在图像切换时更新 php session 变量

javascript - 如何在自定义处理的输入字段中输入数据?