web-dev-qa-db-fra.com

Comment définir un cookie?

Je dois enregistrer un cookie pour les utilisateurs anonymes dans Drupal 8 lorsque les utilisateurs visitent le site pour la première fois, qui sera utilisé pour afficher un message.

Je peux en enregistrer une avec succès en utilisant setcookie("FirstTimer", 1, strtotime('+1 year')); mais je suis sûr que Drupal 8 devrait avoir des alternatives.

Je peux également utiliser le code suivant.

$user_is_first_timer = !isset($_COOKIE["Drupal_visitor_FirstTimer"]);

Lorsque je l'ouvre dans Google Chrome, cela fonctionne, mais lorsque je l'ouvre en mode navigation privée ou dans Firefox, il n'y a aucun message. Les pages en cache sont en quelque sorte diffusées.

Le code est utilisé dans une implémentation de hook_page_attachments().

6
Malabya Tewari

Comme avec Drupal 7, vous utilisez user_cookie_save() . Dans Drupal 8, il y a juste une méthode dans une classe principale utilisant cette fonction: SystemController::compactPage() .

Notez que la fonction accepte un tableau de valeurs; chaque valeur recevra son propre cookie. De plus, la fonction ajoute Drupal.visitor. au nom de la valeur pour créer le nom du cookie; ainsi, user_cookie_save(['myCookie' => 10]) créera un cookie Drupal.visitor.myCookie .

7
kiamlaluno