eveltic / cookie-bundle
AEPD 2024下的Cookie同意管理Symfony包
Requires
- php: ^8.0
- symfony/asset: ^6.0 | ^7.0
- symfony/console: ^6.0 | ^7.0
- symfony/dependency-injection: ^6.0 | ^7.0
- symfony/framework-bundle: ^6.0 | ^7.0
- symfony/http-foundation: ^6.0 | ^7.0
- symfony/http-kernel: ^6.0 | ^7.0
- symfony/orm-pack: ^2.3
- symfony/yaml: ^6.0 | ^7.0
- twig/twig: ^3.0
README
Eveltic Cookie Consent Bundle是一个Symfony包,用于实现和管理网站上的用户cookie同意,从而完全符合最新的2024 AEPD法规。它提供了一个易于使用的界面来配置、收集和存储用户同意的偏好设置。
可以为技术、分析、偏好和广告cookie配置不同类型的cookie设置。它具有易于使用的模板、多语言支持,并易于在Symfony应用程序中实现,以确保您的网站符合法律。
所有操作都通过ajax请求管理,无需刷新。
图片
横幅
配置cookie
撤回同意
浮动按钮
撤回按钮和同意详情
功能
- 管理cookie同意类别:技术、偏好、分析和广告(您可以添加或删除所有类别以满足您的需求)。
- 配置cookie的过期时间。
- 支持浅色、深色和自动主题模式。
- 命令行工具用于归档cookie同意数据。
- 与Doctrine ORM集成。
- 完全功能的twig显示。
- twig和后端函数用于检查是否接受同意。
- cookie版本控制,强制用户重新同意。
安装
- 通过Composer安装包:此命令将在您的composer文件夹中下载并安装此包。
composer require eveltic/cookie-bundle
- 运行安装命令:此命令将创建必要的文件,以满足您的配置需求。
php bin/console ev:cookie:install
- 更新数据库:如果您强制更新数据库
php bin/console doctrine:schema:update --force
或您正在使用迁移
php bin/console make:migration php bin/console doctrine:migrations:migrate
- 将函数添加到模板中(查看使用部分)
{{ ev_cookie_include_assets() }}
{{ ev_cookie_render() }}
卸载
由于没有flex配方,当卸载此包时,您需要手动删除安装命令中安装的配置文件。如果您卸载了包但没有删除这些文件,应用将抛出异常并告知您此问题。
配置
如果您运行了安装命令,所有配置文件都在相应的文件夹中。如果您没有运行命令,并想进行配置,以下是需要您处理的文件
config/packages/eveltic_cookie.yaml
eveltic_cookie: categories: - name: "technical" required: true - name: "preferences" required: false - name: "analytics" required: false - name: "ads" required: false domain: null expiration: "+2 years" version: 1 theme_mode: auto # 'light', 'dark', 'auto'
可用的配置选项
categories:定义cookie类别及其是否必需。domain:设置cookie的域。expiration:设置cookie的过期时间。version:指定cookie同意策略的版本。theme_mode:选择同意对话框的主题模式('light'、'dark'、'auto')。
config/routes/eveltic_cookie.yaml
eveltic_cookie: resource: path: '@EvelticCookieBundle/src/Controller/' namespace: Eveltic\CookieBundle\Controller type: attribute prefix: /
使用方法
函数
Twig函数
{{ ev_cookie_render() }}
渲染cookie同意横幅。此函数根据用户的当前偏好生成显示cookie同意对话框的HTML内容。此函数应包含在您希望显示cookie同意横幅的布局或模板中。
{{ ev_cookie_is_category_accepted('analytics') }}
{{ ev_cookie_is_category_accepted(['technical', 'analytics'])) }}
检查用户是否接受特定的cookie类别(例如,“技术”,“分析”)。此函数对于根据用户对特定类别的同意有条件地加载脚本或其他资源非常有用。此函数支持字符串和数组输入。如果您提供数组输入,两个条件都必须为真才能返回true。
{{ ev_cookie_show_cookie_banner() }}
确定是否向用户显示cookie同意横幅。这通常检查用户是否已经提供了同意。此函数允许您控制是否应显示同意横幅,以避免不必要的重新渲染。
{{ ev_cookie_include_js() }}
包括处理前端cookie同意交互所需的JavaScript。将此放在您的模板中,以确保包含管理cookie同意所需的JavaScript。
{{ ev_cookie_include_css() }}
包括cookie同意横幅的CSS样式。此函数用于添加cookie同意横幅所需的样式。
{{ ev_cookie_include_assets() }}
一次性包含cookie同意横幅所需的JavaScript和CSS资源。此函数是一个方便的方法,可以通过单个函数调用包含JavaScript和CSS,使其更容易集成到模板中。
使用示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My Website</title> {{ ev_cookie_include_assets() }} </head> <body> {{ ev_cookie_render() }} {% if ev_cookie_is_category_accepted('analytics') %} <!-- Create analytics cookies --> {% endif %} <!-- Your content here --> </body> </html>
CookieConsentService提供的后端函数
$cookieConsentService->getConsent()
从用户的会话或cookie中检索当前的cookie同意数据。
$consent = $cookieConsentService->getConsent(); if ($consent) { // Process the consent data } else { // Handle the case where no consent has been given }
$cookieConsentService->hasConsented()
检查用户是否已经为cookie提供了同意。此函数可用于确定是否显示cookie同意横幅。
if ($cookieConsentService->hasConsented()) { // User has already consented } else { // Show consent banner or take appropriate action }
$cookieConsentService->isCategoryAccepted(string $category)
确定用户是否已接受特定的cookie类别。
- 参数
- $category: 您要检查的cookie类别名称(例如,“分析”,“偏好”)。
if ($cookieConsentService->isCategoryAccepted('analytics')) { // Load analytics scripts or perform actions that require analytics cookies }
命令
php bin/console ev:cookie:install
安装cookie同意管理所需的必要资源和设置。
php bin/console ev:cookie:archive php bin/console ev:cookie:archive --date=2023-01-01 --output-format=csv php bin/console ev:cookie:archive --date=2023-01-01 --dry-run
存档旧的cookie同意数据以保持数据库清洁。
参数
--date:(可选)允许您以Y-m-d格式指定日期(例如,2023-01-01)。此参数表示在此日期之前的所有记录将被存档。--output-format:(可选)指定存档记录的输出格式。可用选项包括log: 将存档记录保存到LOG文件。csv: 将存档记录保存到CSV文件。html: 将存档记录保存到HTML文件。
--dry-run:(可选)执行存档过程的模拟,而不实际修改数据库中的任何数据。这对于预览将存档哪些记录而无需做出永久性更改非常有用。
翻译
此捆绑包支持多语言同意横幅。可用翻译包括
- 德语(de)
- 西班牙语(es)
- 法语(fr)
- 意大利语(it)
- 荷兰语(nl)
- 波兰语(pl)
- 葡萄牙语(pt)
- 俄语(ru)
贡献
欢迎贡献!请fork存储库并提交任何功能、错误修复或改进的pull request。
许可
此捆绑包在MIT许可证下发布。有关详细信息,请参阅LICENSE文件。请随意在任何条件下使用并按需修改。




