Fork me on GitHub






Associer un template í  un form de type XoopsThemeForm
Newbie
Inscrit: 21/08/2007 17:47
Messages: 9
Bonjour à tous,
Je suis un nouveau codeur de module grace à l'API fournit par Xoops.
Malheureusement, il y a encore quelques notions sur lesquelles je bloque.
En voici une :
Lors de la création d'un formulaire avec la methode XoopsThemeForm, j'aimerais associer un template particulier à l'affichage, plutot que d'utiliser le vulgaire $form->display()
J'ai donc suivi le tuto suivant
Mais apparement cela ne veut pas vraiment fonctionner, j'ai une erreur de ce type :
Warning [Xoops]: Smarty error: unable to read resource: "db:templates/my_template_form.html" in file C:\xampp\htdocs\test\class\smarty\Smarty.class.php line 1084

J'ai donc bien créé le template voulu dans le repertoire /templates de mon module. Malheureusement, j'ai peur qu'il ne regarde dans le dossier /templates du module /system

Quelqu'un a t'il un exemple précis à me montrer s'il vous plait? Je craque lol.

Merci à tous.

Posté le : 21/08/2007 17:59
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
C'est assez simple :

1/ Ajouter les variables du templates
$xoopsTpl->assign(...);


2/ utiliser la class XoopsThemeForm normalement et y ajouter les éléments
$form = new XoopsThemeForm(....)
...
...


3/ déclarer le template
$xoopsOption['template_main'] = 'nom du template'


4/ Assigner les variables des templates au formulaire
$form->assign($xoopsTpl);


5/ Le template

Voici les variables smarty correspondant au formulaire
<{$form.javascript}> = script de validation des éléments du formulaire
<{$form.name}> = name de la balise html form
<{$form.action}> = action de la balise html form
<{$form.method}> = methode de la balise html form
<{$form.extra}> = onsubmit de la balise html form
<{$form.elements}> = les éléments du formulaire (array/tableau)
<{
$form.elements.caption}> = nom d'un élément du formulaire
<{$form.elements.body}> = balise input d'
un élément du formulaire
<{$form.elements.hidden}> = détermine si l'élément du formulaire est caché


en pratique, hormis les variables standard des templates, voici comment utiliser le formulaire dans un template

<{$form.javascript}>
<
form name="<{$form.name}>" action="<{$form.action}>" method="<{$form.method}>" <{$form.extra}>>

<!-- 
start of form elements loop -->
<{foreach 
item=element from=$form.elements}>
    <
div align 'center'>
        <{if 
$element.hidden != true}>
            <
b>
            <{
$element.caption}>
            </
b><br />
            <{
$element.body}>
            <
br /><br />
        <{else}>
            <{
$element.body}>
        <{/if}>
    </
div>
<{/foreach}>
<!-- 
end of form elements loop -->

</
form>


Bon les explications ne sont peut-être pas très clair pour les non développeurs,
mais si quelqu’un veux écrire un article à ce sujet qui serait plus clair que mes explications, je suis prêt à aider et à corriger.

Posté le : 21/08/2007 20:27
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Newbie
Inscrit: 21/08/2007 17:47
Messages: 9
Merci beaucoup pour ta réponse, mais en réalité, ma question portait sur le chemin du template. Effectivement j'ai toujours la même erreur :

Citation :
Warning [Xoops]: Smarty error: unable to read resource: "db:test.html" in file C:\xampp\htdocs\test\class\smarty\Smarty.class.php line 1084


Je pense qu'il faut que renseigne le chemin ou se trouve le dossier dans une variable.

Posté le : 22/08/2007 08:52
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Newbie
Inscrit: 21/08/2007 17:47
Messages: 9
Ah ... le xoops_version.php :D
Il faut toujours regarder dedans et le recompiler à partir du menu d'administration lol.

Effectivement j'avais omis cette ligne :
$modversion['templates'][1]['file']="templates/test.html";

Le problème est donc en parti résolu, il trouve bien le bon fichier.
Il ne reste plus qu'a l'afficher :(

Posté le : 22/08/2007 09:09
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Newbie
Inscrit: 17/09/2007 02:01
Messages: 1
Hello,

pour afficher un templates, tu as 2 options :

1°) echo $xoopsTpl->fetch('Nom_de_ton_template.html');
2°) $xoopsTpl->display('Nom_de_ton_template.html');

Tu trouveras des informations complémentaires sur le site de Smarty.

Avec plus de détails sur les 2 options :
Smarty Manual - Display()
Smarty Manual - Fetch()

G

Posté le : 17/09/2007 02:14
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Citation :

Portelly a écrit:
Hello,

pour afficher un templates, tu as 2 options :

1°) echo $xoopsTpl->fetch('Nom_de_ton_template.html');
2°) $xoopsTpl->display('Nom_de_ton_template.html');

Tu trouveras des informations complémentaires sur le site de Smarty.

Avec plus de détails sur les 2 options :
Smarty Manual - Display()
Smarty Manual - Fetch()

G


Oui, ceux sont les fonctions natives de smarty.
Mais il faut les éviter dans vos modules, car xoops se charge de l'exécution des ces fonctions

Posté le : 17/09/2007 09:33
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Aspirant
Inscrit: 01/09/2007 08:40
De Île de la Réunion (974)
Messages: 79
Bonjour,

Très intéressant en effet, mais si je souhaite récupérer qu'un élément de formulaire ? Comment faire, j'ai testé et testé sans trouver pour l'instant le moyen de le faire en dehors d'une boucle ...

Avez-vous un exemple ?

Bien cordialement,
Bruno

Posté le : 20/07/2009 12:30
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Semi pro
Inscrit: 13/12/2004 11:28
De Lyon
Messages: 1364
Salut,

Tu devras forcément passer par une boucle pour retrouver un élément.

@+

Posté le : 20/07/2009 12:57
Partager Twitter Partagez cette article sur GG+
Re: Associer un template í  un form de type XoopsThemeForm
Régulier
Inscrit: 22/08/2006 11:44
Messages: 186
si ton élément est unique , tu peux le placer directement

en faisant appel à son libellé et ensuite à sont code généré par xoops :

<span class="resa_label"><{$form.elements.MonElement.caption}></span>
<
span class="resa_input"><{$form.elements.MonElement.body}></span>


sinon, en effet, il faut passer par une boucle

Posté le : 20/07/2009 13:30

:xfsuper:
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

158 Personne(s) en ligne (135 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 158 | Plus ...