Aller au contenu
Patrick Junod Patrick Junod

Livewire: Changer le comportement du message "This page has expired due to inactivity"

Lors de plusieurs projets, j'ai été embêté par le comportement de Livewire, qui propose lorsque le token CSRF n'est plus valide un simple confirm() JS avec un message plutôt froid.
Programmation Livewire

Pour pouvoir modifier ce comportement, il a suffit de quelques lignes que vous pouvez ajouter en fin des balises <head> de votre projet:

<script>
window.livewire.onError(statusCode => {
     if (statusCode === 419) {
          window.location.reload()

          return false
     }
})
</script>

Le code ci-dessus va être exécuter avant que livewire ne gère l'exception, et permet donc de modifier son comportement.  Dans mon exemple, j'ai pris la solution de recharger la page plutôt que d'afficher un confirm().

A savoir qu'il est aussi possible de modifier le statusCode par un autre pour gérer d'autres type de réponse.

Bonus: Afficher une traduction du message d'erreur "This page has expired due to inactivity"

Si vous souhaitez tout de fois afficher un message de confirmation, remplacez le simplement comme ceci, toujours dans votre balise <head>. Le message de confirmation peut ainsi être traduit selon la langue du visiteur.

<script>
window.livewire.onError(statusCode => {
     if (statusCode === 419) {
          confirm(
               {{  __('Cette page a expiré.') }}
           ) && window.location.reload()

          return false
     }
})
</script>