THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour à tous, désolé de vous déranger. Je cherche de l'info qui pourrait vous paraitre de l'info de base... Je cherche à comprendre comment fonctionne les formulaires dans Thélia.
La raison ultime, c'est que je voudrais ajouter un Captcha à mon formulaire de contact, et je ne comprends pas les instructions très basiques données dans le fonctionnement du plugin. Et donc, j'ai voulu repartir du fonctionnement des formulaires, et je ne comprends pas ce qui se passe...
Prenons par exemple mon formulaire de contact :

				<form action="#VARIABLE(urlsite)/?fond=contact" method="POST">
						<input type="hidden" name="action" value="contact" />
					<fieldset>
						<legend>Vos coordonn&eacute;es : </legend>
            					<label for="nom">Nom <span>*</span></label>
								<input name="nom" type="text" />
            					<label for="prenom">Pr&eacute;nom </label>
								<input name="prenom" type="text" />
            					<label for="email">Mon e-mail <span>*</span></label>
								<input name="email" type="text" />
					</fieldset>
					<fieldset>
						<legend>Quel est l&#8217;objet de votre message&nbsp;? <span>*</span></legend>
           					<input name="sujet" type="text" class="objet"  /></p>
					</fieldset>
					<fieldset>
						<legend>Inscrivez-ici votre message <span>*</span>&nbsp;:</legend>

					<textarea name="message" rows="10" /></textarea>
							<div class="colonneSubmit">
								<input type="submit" value="valider"></button>
							</div>
					</fieldset>
				</form>	

- à quel endroit de ce formulaire est indiqué le fichier php qui agit ?
- à quel endroit j'indique les champs obligatoires ? (les * : où est-ce que je renseigne qu'il s'agit d'un champ obligatoire ?)

Dans ma tête, dans un formulaire, on indiquait

<form action="fichier.php" methode="post">

et dans fichier.php on trouvait le code php qui réalisait l'action demandée.
Mais dans mon formulaire de contact, tout ce que je vois, c'est que l'action me renvoie à ma page de contact !
J'ai cherché un peu partout (mais peut-être pas au bon endroit) que ce soit dans le wiki ou dans ce forum, ou ailleurs. Si vous pouviez m'éclairer, ce serait sympa. Merci !

Offline


Pour traiter un formulaire dans Thelia 1, il te faut faire un plugin. Dans la méthode action() de ce plugin, tu traites les champs du formulaire, en faisant une redirection à la fin du traitement si besoin.


OpenStudio Toulouse

Offline


Merci Roadster31 effectivement, j'ai le plugin "contact", et en regardant dedans, je vois que c'est lui qui gère le formulaire de contact. Je commence à comprendre. (j'avais complètement oublié ce plugin). Et effectivement dans le plugin on définit les champs obligatoires.
Je vois aussi que les messages postés sont enregistrés en base, ce qui n'est pas terrible pour le Spam.
Et j'ai des pistes pour insérer mon Captcha !
Merci beaucoup, je continue à travailler sur cette question ! Très bonne soirée !

Offline


Question complémentaire : je dois absolument passer par un plugin ? Je ne peux pas avoir un formulaire dans une page contact.html avec comme page de traitement contact.php ?
Auquel cas j'aurais quelques chose du genre

<form action="contact.php" method="POST>
(...)
</form>

ce n'est pas possible quelque chose de ce genre ?

Offline

Offline


Je suis désolé de vous dérager encore : dans mon formulaire

<form action="traitement.php" method="POST">

Je n'arrive pas à appeler cette page traitement.php. Le site me renvoie une erreur 404. Quelle est la bonne écriture de l'URL de la page de traitement ? Si je mets #URLFOND(traitement) il va me chercher la page html (et non la page PHP), si je mets l'URL en entier www.mondomaine.com/traitement.php il me retourne une erreur 404.
Merci,
Eric LM

Offline


Traitement.php est à la racine du site, au même niveau que index.php ?


OpenStudio Toulouse

Offline


Oui, tout à fait. Lorsque je l'appelle, je suis dirigé vers ma page 404

Offline


J'ai trouvé ! (un peu par hasard). Cf https://thelia.net/wiki/index.php/A_pro … _templates

je dois donc écrire

<form action="template/traitement.php" methode="post">

Et auquel cas, mon fichier traitement.php est bien interprété. C'est à dire qu'il n'est pas interprété par le moteur de Thélia.
A suivre, pour implantation du reCaptcha de Google

Offline


Donc traitement.php n'est est à la racine du site, au même niveau que index.php.


OpenStudio Toulouse

Offline


Pardon, exact. traitement.php est dans mon dossier template. Merci pour votre patience !