Categories > TinyButStrong general (FR) >

Formulaire et sous-modèle

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Drag
Date: 2008-07-23
Time: 16:21

Formulaire et sous-modèle

Bonjour,

Avant de commencer je tenais à remercier Skrol29 d'avoir inventé ce joli petit template engine.
je m'y suis mis récemment pour la construction d'un site dans le cadre de mon stage de première année.
Pour résumer le site doit gérer une database de machines et tester si des connexions vers des ports définis fonctionnent pour chacun d'entre elles.

De ce fait je suis parti sur un modèle basique de type header-menu-contenu-footer.
Voici l'extrait de index.php qui s'occupe de les charger (la faille include est présente, je sais) :

// Page d'affichage du header
$header='include/header.php';
// Page d'affichage du menu
$menu='include/menu.php';
// Page d'affichage du footer
$footer='include/footer.php';
// Page d'affichage du contenu

if (isset($_GET['page']))
{
    // Si &page= est non nul on inclut la page
    $content='include/'.$_GET['page'].'.php';
}
else
{
    // Sinon on inclut homepage.php
    $content='include/homepage.php';
}

et côté html j'utilise donc une syntaxe de type :
[var.content;script=[val];subtpl]

Jusque là tout va bien tout s'affiche correctement.
Les problèmes apparaissent avec le traitement du formulaire d'ajout de la page add_machine.php :

<?php
// Chargement de TBS
include_once('tbs/tbs_class.php');
// Chargement du template
$this->LoadTemplate('templates/add_machine.html');

if (isset($_POST))
{
    /* Tout plein de vérifications pour voir si l'user n'a pas entré n'importe quoi. Si c'est le cas, on édite $error_text pour indiquer ou il s'est trompé. */

}
       
// Affichage   
$this->Show(1);

J'aurai voulu positionner, en bas de ce formulaire, un champ texte qui affiche automatiquement si il y a des erreurs dans les entrées de l'utilisateur, ici donc [var.error_text].

Côté html je me suis inspiré des exemples de TBS pour que le script s'appelle lui-même pour le traitement :
<form action="index.php?page=add_machine" method="post" name="add_machine" id="add_machine">

Quand je submit le formulaire, normalement [var.error_text] devrait changer, hors ce n'est pas le cas et j'ai droit à un beau :
TinyButStrong Error in field [var.error_text...] : the PHP global variable named 'error_text' does not exist or is not set yet.

Sauriez vous à quoi cela est-il du ?
Merci d'avance
Drag

By: Le manchot
Date: 2008-07-23
Time: 17:49

Re: Formulaire et sous-modèle

et si t'inverse ton
$this->LoadTemplate('templates/add_machine.html');
avec ton
if (isset($_POST))
{
/* Tout plein de vérifications pour voir si l'user n'a pas entré n'importe quoi. Si c'est le cas, on édite $error_text pour indiquer ou il s'est trompé. */

}

?

sinon c'est un bug dans ton if sans doute
By: Drag
Date: 2008-07-23
Time: 19:31

Re: Formulaire et sous-modèle

En fait je crois que je me complique gravement la tâche au niveau de mon squelette de site, d'où l'erreur..
By: Drag
Date: 2008-07-29
Time: 11:20

Re: Formulaire et sous-modèle

L'astuce est de garder ces lignes dans index.php
$header='templates/header.html';
$menu='templates/menu.html';
$footer='templates/footer.html';

De mettre des :
[onload;file=[var.header]]
à la place des
[var.content;script=[val];subtpl]
dans index.html.

Ensuite pour gérer le contenu dynamique, on inclut dans chaque nouvelle page .php le template correspondant :
$content='templates/blabla.html'

Et on affiche le template principal de index.html :
$TBS->LoadTemplate('templates/index.html');

Cordialement