Magento 2: Как использовать Cookie?

9

Как мы можем использовать cookie в magento 2 для хранения данных ..

я пытаюсь сохранить данные в cookie, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js чтобы сохранить выбранный способ доставки,

Yogesh
источник

Ответы:

16

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для большинства случаев использования. При этом будет автоматически использоваться конфигурация cookie для магазина Magento без необходимости явно определять их с помощью jquery/jquery.cookie.
Pmclain
10

Вы можете сохранить cookie в js файле, используя метод ниже,

define([
    'jquery',
    'mage/cookies'
], function ($) {
    $.cookie('cookiename', cookievalue);
});
Ракеш Джесадия
источник
mage/cookiesэто для Magento 1?
Анкит Шах
1
@AnkitShah mage / cookies также работает в magento 2.
Ракеш Джесадия,
Любая идея, как установить срок годности, используя этот метод @RakeshJesadiya?
Бен Крук
@BenCrook, $ .cookie ('foo', '', {path: '/', expires: -1}); у тебя не работает?
Ракеш Джесадия
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 на другой странице.
Чираг Патель
Также я был проверен в консоли, но я не могу найти там.
Чираг Патель
@ChiragPatel Вы правильно выбрали путь? Файлы cookie доступны только по указанному пути и любым подпутям.
Ключ Шан
@KeyShang Спасибо! Я решил свою проблему, есть проблема с моим кодом.
Чираг Патель
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>
Tonmoy
источник
0

На всякий случай, если вам нужно открыть модал или нет после проверки куки:

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

это правильный порядок, иначе модал не будет работать

Энрико Трэшер Монцельо
источник