Magento 2:如何使用Cookie?


9

我们如何在magento 2中使用cookie来存储数据。

我正在尝试将数据存储在Cookie中, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js 以存储选定的估计运输方式,

Answers:


15

app/code/Custom/Module/view/frontend/templates/sample.phtml

<script type="text/javascript">
    require([
        'jquery',
        'jquery/jquery.cookie'
    ], function ($) {
        $(document).ready(function () {

            var check_cookie = $.cookie('foo'); // Get Cookie Value
            var date = new Date();
            var minutes = 60;
            date.setTime(date.getTime() + (minutes * 60 * 1000));
            $.cookie('foo', '', {path: '/', expires: -1}); // Expire Cookie
            $.cookie('foo', 'bar', {expires: date}); // Set Cookie Expiry Time
            $.cookie('foo', 'setvalue'); // Set Cookie Value
        }
    });
</script>

PHP方面的有用文章:https : //webkul.com/blog/set-get-data-cookie-magento2/


1
就像@ rakesh-jesadiya在下面指出的那样,您应该将其mage/cookie用于大多数用例。这样做将自动为Magento存储使用cookie配置,而无需使用显式定义它们jquery/jquery.cookie
普姆克拉林'17

10

您可以使用以下方法将cookie存储在js文件中,

define([
    'jquery',
    'mage/cookies'
], function ($) {
    $.cookie('cookiename', cookievalue);
});

mage/cookies是给Magento 1的吗?
Ankit Shah

1
@AnkitShah法师/饼干也正致力于在Magento 2
拉克什Jesadiya

任何想法如何使用此方法@RakeshJesadiya设置到期日期?
本·克鲁克

@BenCrook,$ .cookie('foo','',{路径:'/',到期:-1}); 不是为你工作?
Rakesh Jesadiya

1
事实证明,默认情况下,它与用户会话一起过期,这正是我所需要的。相关问题,$.cookie()和 之间有什么区别$.mage.cookies.set()
本·克鲁克

9

在中target.phtml,添加如下所示的js代码。

设置饼干

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
       $.cookie('cookie_name', 'value', { path: '/' });//Set the cookies
    });
</script>

如果要从另一个页面获取值,请注意路径设置{ path: '/' }

由于cookie仅可访问指定的路径和任何子路径,因此,您可以在此处查看cookie路径及其对子文件夹页面的可访问性

获取饼干

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
        var temp = $.cookie('cookie_name');//Get the cookies
    });
</script>

如何在观察者或控制器上使用此cookie
Sarvesh Tiwari,

我尝试使用上面的代码,但是在另一页中没有得到cookie值。
Chirag Patel

另外我在控制台中检查过,但找不到。
Chirag Patel

@ChiragPatel您设置正确的路径了吗?Cookies仅可用于指定的路径和任何子路径。
Key Shang

@KeyShang谢谢!我解决了我的问题,我的代码有问题。
Chirag Patel

0

使用以下内容将数据存储在Cookie中。这是代码,

<script>
require([
    'jquery',
    'jquery/jquery.cookie',
    'domReady!'
], function($) {
  var data = "store my data";
  $.cookie('my_data', data );
  console.log($.cookie('my_data'));
});
</script>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.