Magento 2: Como usar o Cookie?

9

Como podemos usar cookies no magento 2 para armazenar dados.

estou tentando armazenar dados no cookie, vendor/magento/module-checkout/view/frontend/web/js/model/resource-url-manager.js para armazenar o método de envio estimado estimado,

Yogesh
fonte

Respostas:

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>

Artigo útil no lado do PHP: https://webkul.com/blog/set-get-data-cookie-magento2/

Ankit Shah
fonte
11
Como @ rakesh-jesadiya afirma abaixo, você deve usá-lo mage/cookiena maioria dos casos de uso. Fazer isso usará automaticamente a configuração de cookies da loja Magento sem precisar defini-las explicitamente jquery/jquery.cookie.
Pmclain 17/09
10

Você pode armazenar cookies no arquivo js usando o método abaixo,

define([
    'jquery',
    'mage/cookies'
], function ($) {
    $.cookie('cookiename', cookievalue);
});
Rakesh Jesadiya
fonte
mage/cookiesé para Magento 1?
Ankit Shah
11
@AnkitShah mago / cookies também está trabalhando em Magento 2.
Rakesh Jesadiya
Alguma idéia de como definir uma data de validade usando esse método @RakeshJesadiya?
Ben Crook
@BenCrook, $ .cookie ('foo', '', {caminho: '/', expira em: -1}); não está funcionando para você?
Rakesh Jesadiya
11
Acontece que ele expira com a sessão do usuário por padrão, que é o que eu precisava. Pergunta relacionada, existe alguma diferença entre $.cookie()e $.mage.cookies.set()?
Ben Crook
9

No target.phtml, adicione códigos js como abaixo.

Defina os cookies

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

Se você deseja obter o valor de outra página, observe a configuração do caminho{ path: '/' } !

Como os cookies são acessíveis apenas ao caminho especificado e a quaisquer subcaminhos , para mais discussões sobre isso, você pode ver aqui Caminho dos cookies e sua acessibilidade às páginas das subpastas .

Obter os cookies

<script>
    require([
        'jquery',
        'mage/cookies'
    ], function ($) {
        var temp = $.cookie('cookie_name');//Get the cookies
    });
</script>
Key Shang
fonte
Como usar este cookies no observador ou controlador
Sarvesh Tiwari
Eu tento com o código acima, mas não estou recebendo o valor do cookie em outra página.
Chirag Patel
Também eu fui verificado no console, mas não consigo encontrar lá.
Chirag Patel
@ChiragPatel Você define o caminho certo? Os cookies são acessíveis apenas ao caminho especificado e a qualquer subcaminho.
Key Shang
@KeyShang Thanks! Eu resolvi o meu problema, há um problema com o meu código.
Chirag Patel 12/10
0

use o abaixo para armazenar dados dentro do cookie. Aqui está o código,

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

Apenas no caso de você precisar abrir ou não um modal após a verificação do cookie:

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

esta é a ordem correta, caso contrário, o modal não funcionará

Enrico Thrasher Monzeglio
fonte