FormBuilder post vers UDT - affichage du $_POST dans le textarea -
aurore222 - 18/07/2018
BOnjour à toutes et à tous,
je suis en train de voir comment je vais pouvoir gérer un message à partir d'un formulaire.
Je n'ai qu'un champs message et deux champs hidden (id_user) et (alias-page)
au post, cela m'appelle une UDT qui enregistre dans une table spécifique les données
Ce que j'aimerais arriver à faire c'est quand je me rends sur la page et qu'il existe un post avec l'user loggé alors je charge le message dans le textarea.
Avez-vous une idée si cela est possible ? et une piste pour savoir comment m'y prendre?
Par ailleurs y a t'il une fonction ou autre qui permettrait d'obtenir toutes les variables disponibles type {debug} de prestashop.
Encore merci pour vos retours.
Belle journée.
Aurore.
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
aurore222 - 18/07/2018
Rebonjour,
j'avance un peu cependant je bloque sur la récupération de l'alias de page dans une udt
quand je fais un {get_template_vars}
j'affiche des variable dont page_name mais je ne sais pas comment la récupérer en php?
un petit coup de pouce serait le bienvenue.
Merci
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
airelibre - 19/07/2018
Bonjour,
Il y a deux méthodes : une en PHP via la récupération de l'objet de contenu courant, mais la méthode la plus rapide dans ton cas serait peut-être de tout simplement passer la variable Smarty dans l'UDT. Par ex :
Code :
{MonUDT page_alias=$page_alias}
Code de l'UDT :
Code :
$page_alias = $params['page_alias'];
Cela répond-il à ta question ?
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
aurore222 - 19/07/2018
Oui c'est parfait.
Merci beaucoup
et l'inverse est possible ? je m'explique
dans mon gabarit j'appelle {MonUDT page_alias=$page_alias} qui compte le nb de résultats d'une requête à la fin j'ai un $nb_message=1 par exemple.
Est-ce possible dans mon gabarit de faire un test sur $nb_message.
... ma page ou mon gabarit
Code :
[== Indéfini ==]
{MonUDT page_alias=$page_alias}
puis
{if $nb_message !=0}
{/if}
...
j'ai essayé de la passer en global ou autre mais je ne trouve pas
Merci d'avance.
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
airelibre - 19/07/2018
Dans ce cas il faut renvoyer la variable à Smarty
Exemple 1
Code :
{$nb_message={MonUDT page_alias=$page_alias}}
{if $nb_message > 0}
...
{/if}
> dans ce cas il faut bien ajouter à ton UDT un "return $nb;" à la fin
Exemple 2 dans l'UDT :
Code :
$smarty->assign('nb_messages', $nb);
Voire même définir le nom de la variable lors de l'appel de l'UDT :
Code :
$smarty->assign($params['assign'], $nb);
... et dans le code Smarty :
{MonUDT page_alias=$page_alias assign='nb_messages'}
Dis-nous si c'est ok pour toi ?
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
aurore222 - 19/07/2018
Bonsoir AirLibre et merci
la méthode 1 fonctionne très bien si je n'ai besoin que d'une variable.
Je suppose que je devrais utiliser la version 2 si je voulais récupérer 2 variables par exemple nb_message et message lui-même ?
J'ai essayé avec
dans mon udt
Code :
...
$smarty->assign('nb_messages', $nb);
$smarty->assign('message', $message);
puis dans mon gabarit je fais un test si nb>0 et je cherche à afficher message
Code :
[== Indéfini ==]
{$nb={MonUDT page_alias=$page_alias assign='nb_messages'}}
{$message={MonUDT page_alias=$page_alias assign='message'}
{if $nb>0}
//remplissage du textarea dont le nom est message avec la valeur $message
{FormBuilder form='update_rdv' value_MESSAGE='$message'}}
{/if}
Mais cela ne fonctionne pas je pense que quelque chose m'a échappé et je ne sais pas si c'est jouable de remplir le formBuilder :$
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
airelibre - 20/07/2018
Bonjour,
En fait la syntaxe :
ne peut fonctionner qu'avec une variable de retour - le assign est indépendant de la variable de retour dans mon exemple. A noter cependant qu'un tableau peut être retourné, et traité dans smarty.
Mais le plus simple dans ton cas pour deux variables est de traiter deux assign :
Code :
{MonUDT page_alias=$page_alias assign_message='message' assign_nb='nb'}
Puis dans l'UDT en PHP :
Code :
$smarty->assign($params['assign_nb'], $nb);
$smarty->assign($params['assign_message'], $message);
Ou, si le fait d'assigner dynamiquement le nom de la variable dans la l'UDT est inutile :
Code :
$smarty->assign('nb', $nb);
$smarty->assign('message', $message);
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
aurore222 - 20/07/2018
C'est super ! franchement un grand merci
Du coup, ce que je pensais comprendre c'est que je transmettais les variables à smarty et que ça les rendait un peu globale ?
mais du coup si je veux injecter la valeur du message dans un formulaire comme ça : ou ailleurs d'ailleurs
Code :
{FormBuilder form='update_rdv' value_MESSAGE='$message'}
la pour le coup ça charge bien le texarea mais avec $message comme contenu.
Pourtant smarty la connait ? et si je fais un {$message} le textarea affiche {$message} ??
je peux faire un {FormBuilder form='update_rdv' assign_message=$message}
FormBuilder post vers UDT - affichage du $_POST dans le textarea -
airelibre - 23/07/2018
La syntaxe dans ce cas n'est pas bonne car tu transmet une valeur de type "string" au lieu du contenu de la variable.
Il faut utiliser cette syntaxe :
Code :
{FormBuilder form='update_rdv' value_MESSAGE=$message}