theunraveler/ujs-bundle

该软件包已被弃用,不再维护。没有建议的替代软件包。
该软件包的最新版本(1.0.5)没有可用的许可证信息。

为 Symfony 2 设计的无干扰 JavaScript 包。允许使用简单链接使用非 GET 路由。

安装数: 2,571

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 1

开放问题: 0

语言:JavaScript

类型:symfony-bundle

1.0.5 2013-05-01 15:38 UTC

This package is auto-updated.

Last update: 2022-06-08 17:52:34 UTC


README

为 Symfony 2 设计的无干扰 JavaScript 包。允许使用简单链接使用非 GET 路由。

依赖

  • Symfony
  • jQuery

安装

安装方法与其他 Symfony 包相同。有关安全性的进一步说明,请参阅下面的章节。

安装后,您需要运行 app/console assets:install 或如果您使用 Assetic,则添加 @UjsBundle/Resources/public/js/ujs.js

用法

对于您希望使用除 GET 之外的 HTTP 方法提交的任何链接,只需包含一个 data-method 属性,如下所示

<a href="/posts/15" data-method="DELETE">Delete this post</a>

您可以选择包含一个 data-confirm 属性,该属性将用作 JavaScript 确认对话框中的文本。

<a href="/posts/15" data-method="DELETE" data-confirm="Are you sure you
want to delete this post?">Delete this post</a>

如果您将 data-confirm 属性设置为 false,则不会显示确认消息。但是请注意,使用链接预取的浏览器可能会遵循链接并执行破坏性操作。

安全

重要!! 如果您不实施以下步骤,您的应用程序将容易受到跨站脚本攻击!

首先,您需要在您希望使用 UJS 的任何页面上包含一个 HTML <meta> 标签。例如,将以下内容添加到您的 <head> 部分

<meta name="_ujs_csrf_token" content="{{ csrf_token('ujs') }}" />
<meta name="_ujs_csrf_token_name" content="_ujs_csrf_token" />

您希望使用 UJS 提交的任何控制器操作都应该检查 CSRF 令牌以确保其有效性,如下所示

public function deleteAction(Request $request)
{
    if ($request->request->has('_ujs_csrf_token') && $this->get('form.csrf_provider')->isCsrfTokenValid('ujs', $request->request->get('_ujs_csrf_token'))) {
        // Do your deleting, posting, etc.
    }
}