theunraveler / ujs-bundle
该软件包已被弃用,不再维护。没有建议的替代软件包。
该软件包的最新版本(1.0.5)没有可用的许可证信息。
为 Symfony 2 设计的无干扰 JavaScript 包。允许使用简单链接使用非 GET 路由。
1.0.5
2013-05-01 15:38 UTC
Requires
- php: >=5.3.2
- symfony/http-kernel: *
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.
}
}