[Résolu] Refresh une vue en l'absence de résultat

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'ai actuellement un problème avec le module "Views".
J'ai une vue qui affiche un seul contenu sur base de filtres. En l'absence de résultat, je crée ce contenu automatiquement à l'aide d'un script php. Ce script PHP est écrit dans une variable "Global : PHP" (du module Views PHP) se trouvant dans la catégorie "Comportement en l'absence de résultats".
Du coup, le contenu est créée en l'absence de résultat mais pour qu'on puisse le voir, il faut que la vue soit rafraichit automatiquement. Pour le moment, je suis obligé de rafraichir la page pour voir ce contenu.
Actuellement, j’utilise le module "Better exposed filter" pour rafraichir les filtres automatiquement en Ajax et enlever le bouton "Appliquer" des filtres.

Ma question est : Comment puis-je rafraichir la vue automatiquement après que le script php de création du contenu soit exécuté ?

Edit : "Views auto-refresh" aurait été l'idéal si ce dernier pouvait s'exécuter qu'une seule fois après que le script php soit exécuté (environ 1 seconde).

Merci d'avance,

sokarcreative

Forum : 
Version de Drupal : 

Bonjour,

Je ne suis clairement pas un adepte du code PHP dans les vues, par contre pourquoi ne pas simplement faire :

drupal_goto(current_path());

à la fin de votre code ?

Merci pour cette solution, je ne connaissais pas cette fonction x) mais j'ai trouvé mieux et ne nécessitant pas de rafraichissement de la page (ou vue).

Je suis parvenu à résoudre le problème en utilisant le hook_views_post_build(&$view).
Il permet de récupérer le résultat de la requête avant l'affichage de la vue.

Du coup, j'ai créée mon contenu si $view->total_rows était égal à 0.

Après ce hook, il ré-effectue la requête pour l'affichage et "tadam" le contenu s'affiche directement.