Popup et redirection

Bonjour tout le monde , j’ai encore quelques questions .Pour améliorer encore mes modules je voudrais créer des popup de confirmation d’effacement dans la base de données ? ou de suppression de pdf j’ai vu que cela ce fessait et comment sont géré les redirections sur dolibarr , moi j’utilise un bout de code java-script mais, si il y a mieux je suis preneur. merci

Salut,

Pour l’affichage de popup tu peux utiliser la méthode formconfirm de la classe Form. Cette méthode te renvoie le code HTML qui permet d’afficher la popup, tu as juste à faire un echo pour l’afficher. Tu peux aussi utiliser form_confirm qui se charge aussi de faire un print. Personnellement j’aime bien séparer code et template et je procède comme ca :

$html = new Form($db);
$formconfirm = $html->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id,'titre de la popup','message','confirm_delete','','no',1);

Le premier paramètre est l’url du script appelé si la popup est validée et le troisième paramètre (ici ‹ confirm_delete ›) est la valeur qui sera placé dans la variable GET[‹ action ›].

Et plus loin, j’ai juste à faire :

echo $formconfirm;

Pour les redirections, j’utilise la fonction header mais je ne sais pas si Dolibarr inclut quelque chose de particulier à ce niveau.

1 J'aime

bonjour merci de ta réponse , alors le popup apparait bien mais bon comment l’appeler au clic sur un bouton , moi toute les actions suivant , son effectué même si je ne clic pas sur ‹ oui › ? d’avance merci

ah bas !! désolé enfaite j’ai trouvé , oui j’ai le cerveau qui lag des fois , désolé . par contre j’ai encore une questions voilà l’erreur affichée quand je fais un header();

Warning: Cannot modify header information - headers already sent by …

Merci

La ca va être difficile de trouver une solution précise sans voir ton code. Cette erreur veut dire qu’un echo ou un print a été réalisé avant l’appel du header. Faudrait passer ton code en revue pour voir si tu n’affiches pas quelque chose avant l’appel à cette fonction.

voilà voilà c’est dans un switch des j’ai effectué mon action

case 'cloturer_ok'://si $action égal cloturer on update le champ état dans la table llx_cmaint à 1 puis redirection $req_etat=$db-\>query("UPDATE llx_cmaint SET etat=1 where id=$id"); //echo '<script language="Javascript"\>document.location.replace("/dolibarr/htdocs/contratmaintenance/htdocs/contrat.php?id='.$id.'");</script\>'; header('Location: /dolibarr/htdocs/contratmaintenance/htdocs/contrat.php?id='.$id.''); break;

en gros des que je clôture je voudrais ,un rafraichissement de la page

En fait le echo ou le print qui fait bugger la fonction header peut être au tout début, donc c’est toute la page de code qu’il faudrait…