Magento 2: Làm thế nào để sử dụng Cookie?


9

Làm cách nào chúng ta có thể sử dụng cookie trong magento 2 để lưu trữ dữ liệu ..

Tôi đang cố lưu trữ dữ liệu trong cookie, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js để lưu trữ phương thức vận chuyển ước tính đã chọn,

Câu trả lời:


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>

Bài viết hữu ích về phía PHP: https://webkul.com/blog/set-get-data-cookie-magento2/


1
Như @ rakesh-jesadiya tuyên bố dưới đây, bạn nên sử dụng mage/cookiecho hầu hết các trường hợp sử dụng. Làm như vậy sẽ tự động sử dụng cấu hình cookie cho cửa hàng Magento mà không cần xác định rõ ràng chúng với jquery/jquery.cookie.
Pmclain

10

Bạn có thể lưu trữ cookie trong tệp js bằng phương pháp bên dưới,

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

mage/cookiesdành cho Magento 1?
Ankit Shah

1
@AnkitShah mage / cookies cũng đang hoạt động trong magento 2.
Rakesh Jesadiya

Bạn có biết làm thế nào để thiết lập ngày hết hạn bằng phương pháp này @RakeshJesadiya không?
Ben Crook

@BenCrook, $ .cookie ('foo', '', {path: '/', hết hạn: -1}); không làm việc cho bạn?
Rakesh Jesadiya

1
Hóa ra nó hết hạn với phiên của người dùng theo mặc định, đó là những gì tôi cần. Câu hỏi liên quan, có sự khác biệt giữa $.cookie()$.mage.cookies.set()?
Ben Crook

9

Trong target.phtml, thêm mã js như dưới đây.

Đặt cookie

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

Nếu bạn muốn nhận giá trị từ một trang khác, hãy chú ý cài đặt đường dẫn{ path: '/' } !

cookie chỉ có thể truy cập vào đường dẫn được chỉ định và bất kỳ đường dẫn phụ nào , nên thảo luận thêm về điều này bạn có thể thấy ở đây Đường dẫn cookie và khả năng truy cập của nó vào các trang thư mục con .

Lấy bánh quy

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

Cách sử dụng cookie này trên người quan sát hoặc người điều khiển
Sarvesh Tiwari

Tôi thử với mã ở trên nhưng tôi không nhận được giá trị cookie trong một trang khác.
Chirag Patel

Ngoài ra tôi đã được kiểm tra trong giao diện điều khiển nhưng tôi không thể tìm thấy ở đó.
Chirag Patel

@ChiragPatel Bạn có đặt đường dẫn đúng không? Cookies chỉ có thể truy cập vào đường dẫn được chỉ định và bất kỳ đường dẫn phụ nào.
Khóa Shang

@KeyShang Cảm ơn! tôi đã giải quyết vấn đề của tôi có một vấn đề với mã của tôi.
Chirag Patel

0

sử dụng dưới đây để lưu trữ dữ liệu bên trong cookie. Đây là mã

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

0

Chỉ trong trường hợp bạn cần mở hoặc không sử dụng phương thức sau khi kiểm tra cookie:

 require(
    [
        'jquery',
        'Magento_Ui/js/modal/modal',
        'jquery/jquery.cookie'
    ],

Đây là thứ tự đúng nếu không phương thức sẽ không hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.