Plateformes

Comment ajouter un bandeau cookies à une application Laravel

Dans Laravel, collez la balise dans le head du layout Blade dont hérite chaque page (resources/views/components/layout.blade.php ou resources/views/layouts/app.blade.php), au-dessus de @vite et de tout autre script. Lisez la clé de site depuis config/services.php plutôt que d’appeler env() dans la vue, et marquez les balises de suivi dans le même layout. Le wire:navigate de Livewire ne demande aucun code supplémentaire : le bandeau reste en place d’une visite à l’autre.
Publié le 21 octobre 2026 · Par l’équipe Cookiequiet

Étapes

Copier la baliseDans le tableau de bord Cookiequiet, ajoutez le site et copiez la balise avec votre clé de site, data-consent-mode="1" et data-auto-block="1".
Ranger la clé dans la configurationAjoutez COOKIEQUIET_SITE à .env et une entrée cookiequiet à config/services.php qui la lit avec env(), pour que la valeur survive à php artisan config:cache.
Coller la balise dans le layoutOuvrez le layout qu’utilise chaque page et collez la balise dans le head, au-dessus de @vite et de tout autre script, avec data-site renseigné depuis config('services.cookiequiet.site').
Marquer vos balisesCollez les balises de mesure d’audience et de publicité sous la balise Cookiequiet avec type="text/plain" et data-cq-category, à l’intérieur de @production si elles ne doivent s’exécuter qu’en production.
Gérer Livewire ou InertiaAvec wire:navigate, envoyez le code propre à chaque page, comme les pages vues, depuis un écouteur livewire:navigated. Avec Inertia, conditionnez les composants comme le montre le guide React ou Vue.
Ajouter le lien Préférences de cookiesDans le partial du pied de page, ajoutez une ancre ordinaire avec href="#cq-preferences" et l’attribut data-cq-show-preferences.
Tester avec Tout refuserOuvrez le site dans une fenêtre de navigation privée, cliquez sur Tout refuser et vérifiez que seuls cq_consent et vos cookies de session sont déposés. Acceptez tout, rechargez et consultez le registre des consentements.

Où placer la balise dans Laravel ?

Les pages Laravel partagent un layout Blade : un composant comme resources/views/components/layout.blade.php rendu avec <x-layout>, ou une vue parente comme resources/views/layouts/app.blade.php que les vues enfants nomment avec @extends. Collez la balise dans le head de ce layout, au-dessus de @vite et de tout autre script :

blade
{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cookiequiet.com/cq.js" data-site="{{ config('services.cookiequiet.site') }}" data-consent-mode="1" data-auto-block="1" defer></script>
<title>{{ config('app.name') }}</title>
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body>
@yield('content')
</body>
</html>

Gardez la clé dans la configuration. Ajoutez COOKIEQUIET_SITE=your-key à .env et lisez-la dans config/services.php :

php
'cookiequiet' => [
'site' => env('COOKIEQUIET_SITE'),
],

La documentation de Laravel prévient qu’une fois php artisan config:cache exécuté, le fichier .env n’est plus chargé et env() ne renvoie que les variables d’environnement du système : il ne faut donc l’appeler que dans les fichiers de configuration. Appeler config() dans la vue évite un data-site vide en production.

Si l’application a plusieurs layouts (un layout invité pour les pages de connexion, un layout applicatif pour les utilisateurs connectés), placez la balise dans chacun, ou dans un partial qu’ils incluent tous avec @include.

Comment bloquer mes balises jusqu’au consentement ?

Collez les balises de suivi sous la balise Cookiequiet et modifiez leur balise d’ouverture. La directive Blade @production les tient à l’écart des environnements local et de préproduction :

blade
@production
<script type="text/plain" data-cq-category="analytics" src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
<script type="text/plain" data-cq-category="analytics">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXX');
</script>
@endproduction

Cookiequiet exécute les balises marquées quand la catégorie est accordée, et d’emblée lors des visites suivantes où le choix enregistré l’inclut. Le guide Google Analytics 4 couvre l’alternative du Consent Mode et le guide Meta Pixel le pixel. Les balises poussées depuis des vues enfants avec @push dans une stack du head fonctionnent de la même façon, tant que la stack est imprimée sous la balise Cookiequiet. Les scripts ajoutés à l’exécution par JavaScript sont retenus par le bloqueur automatique quand ils viennent de l’un des quelque 80 traceurs qu’il connaît.

Et Livewire et Inertia ?

Livewire avec wire:navigate. La documentation de Livewire indique que les scripts du head ne s’exécutent qu’à la première visite : la balise s’exécute donc une fois et le choix enregistré reste appliqué. Elle indique aussi que tout le body est remplacé à chaque visite. Le conteneur du bandeau vit dans le body, et Cookiequiet le replace dans chaque nouveau body : un bandeau en attente de réponse, le bouton des préférences et showPreferences() continuent donc de fonctionner sans code supplémentaire.

Gardez les balises marquées dans le head du layout, et écoutez livewire:navigated, qui se déclenche après chaque navigation et au premier chargement, pour le code qui envoie des pages vues.

Inertia. Le template racine (resources/views/app.blade.php avec @inertiaHead) reçoit la balise au-dessus de @vite. Les pages sont des composants React ou Vue : lisez-y le choix comme le montrent les guides React et Vue, avec l’événement cq:consent que Cookiequiet émet sur window chaque fois qu’il applique un choix.

Comment ajouter le lien Préférences de cookies ?

Dans le partial du pied de page :

html
<a href="#cq-preferences" data-cq-show-preferences>Cookie preferences</a>

Comment tester ?

  1. Lancez une fois php artisan config:cache pour vérifier que la clé est toujours rendue, puis affichez le code source de la page : cq.js est le premier script du head.
  2. Ouvrez le site dans une fenêtre de navigation privée et cliquez sur Tout refuser. Les cookies sont cq_consent, votre cookie de session et XSRF-TOKEN : ces deux derniers sont propres à Laravel, déposés pour chaque visiteur, et strictement nécessaires.
  3. Effacez les cookies, cliquez sur Tout accepter, rechargez : les balises marquées s’exécutent.
  4. Avec wire:navigate, ouvrez une deuxième page avant de choisir : le bandeau reste visible.
  5. Consultez le registre des consentements dans le tableau de bord.

Une Content Security Policy doit autoriser https://cookiequiet.com dans script-src et connect-src. Cookiequiet est gratuit pour un site, ciblage géographique compris ; Starter coûte 3 € par site et par mois, avec des pages vues illimitées.

Questions

Non. Le bandeau est une balise script dans votre layout Blade, avec la clé de site lue depuis la configuration. Il n’y a rien à installer avec Composer ou npm.
La documentation de Laravel indique qu’une fois la configuration mise en cache, le fichier .env n’est plus chargé et env() ne renvoie que les variables d’environnement du système : env() n’a donc sa place que dans les fichiers de configuration. Lire la clé via config/services.php la garde fonctionnelle après php artisan config:cache.
Ils maintiennent la session et protègent les formulaires contre la falsification de requêtes intersites, ce qui les rend strictement nécessaires dans la plupart des lectures des règles ePrivacy. Listez-les comme nécessaires dans le tableau des cookies ; le bandeau ne les bloque pas.
Oui. Le script du head s’exécute une fois et le choix reste appliqué. Livewire remplace le body à chaque visite, et Cookiequiet déplace de lui-même le conteneur de son bandeau dans le nouveau body : un visiteur qui navigue avant de choisir voit donc toujours le bandeau.

Mettez un bandeau discret sur votre site dès aujourd’hui

Gratuit pour un site avec toutes les fonctions essentielles, sans carte ni période d’essai qui expire. Passez un site en Starter pour €3 par mois pour le mettre à vos couleurs par IA sans la mention Cookiequiet, ou en Pro pour €9 pour le concevoir avec l’agent IA.