[TEMPLATE][SESSION] Problème d'affichage
Hors ligneHametsu Le 25/01/2006 à 10:15 Profil de Hametsu Configuration de Hametsu

Bonjour,
j'ai rencontré un problème lors de l'utilisation du moteur de template pour PHP5 avec la class FORM de malalam :

je rencontre une Erreur, et ma variable $form affiche "Objet" dans le template, au lieu du formulaire...


-------


Deuxième question, j'ai un problème avec la fonction :

function unregister($var)
     {
          $var = $_SESSION[$var];
          return unset($var);
     }
Dans une class session perso, alors qu'en dehors d'une class cela marche à la perfection :

T_UNSET, il me semble...

Merci de vos réponses.
Hors ligneAnthony Le 25/01/2006 à 21:07 Profil de Anthony Configuration de Anthony

Admin
Salut,

le mieux que tu puisses faire est de lui demander dans les commentaires de la source ;-)

Sinon pour ça :
function unregister($var)
     {
          $var = $_SESSION[$var];
          return unset($var);
     }

tente de le remplacer par

function unregister($var)
{
          return unset($_SESSION[$var]);
}

mais tu auras toujours ton erreur si tu passes mal un argument (tu ne dois pas passer une variable mais une chaîne de caractères dans le cas présent)
--

Hors ligneHametsu Le 26/01/2006 à 12:53 Profil de Hametsu Configuration de Hametsu

J'obtiens la même erreur, c'était sous cette formulaition avant... le plus incrédible, c'est qu'en dehors d'une class ce morceau de code marche...

Pour le formulaire, cela vient de la class template PHP5 qui doit être incompatcible avec la création du formulaire dans la fonction tostring de la class form...


ARG :'(
Hors ligneMalalam Le 26/01/2006 à 13:23 Profil de Malalam Configuration de Malalam

Hello ,

essaye un echo $form -> __toString();

directement.

Sinon, comment as tu mixé les deux ?
Hors ligneHametsu Le 26/01/2006 à 18:13 Profil de Hametsu Configuration de Hametsu

Ta class marche impecable lorsque je l'utilise seul et je n'ai besoin que de faire " echo $form" mais dés que j'assigne la variable $form a une variable pour le template, j'obtiens une erreur ou plutôt une notice et au lieu de m'affiche ma variable {FORM} il m'affiche "objet"...
Hors ligneMalalam Le 26/01/2006 à 18:19 Profil de Malalam Configuration de Malalam

Faudrait regarder en détail la classe de template d'Antho, mais je pense que ton assignation n'est pas une bonne chose...

Parce que la classe template doit attendre une chaine. Or $form est un objet. Donc ce qui se passe est normal.

Essaye de faire un truc du genre :

$sForm = $form -> __toString ();

et d'afficher {SFORM}.

Sinon, un moyen simple : tu renommes la méthode __toString (un nom au pif : affForm () par exemple). Là tu auras un retour sous forme de chaine. Et tu fais :
$sForm = $form -> affForm ();

Et le tour est joué.

Normalement... ;-)
Hors ligneAnthony Le 26/01/2006 à 23:54 Profil de Anthony Configuration de Anthony

Admin
Malalam > heu la fonction unregister elle est pas dans mon code, t'as fait une fonction unregister dans ta classe formulaire ?
--

Hors ligneMalalam Le 27/01/2006 à 08:44 Profil de Malalam Configuration de Malalam

Heu nan, lol. Mais il a dit que c'était pour une classe de session perso. aucun rapport avec nos codes, ce point là :)
Hors ligneHametsu Le 27/01/2006 à 09:52 Profil de Hametsu Configuration de Hametsu

c'est exact, cela provient d'une class perso, j'ai trouvé une solution, pour celle-ci ;)

Merci malalam,


$sForm = $form -> __toString ();
$template->assign('FORM', $sForm);
echo $template;


Marche à la perfection, you are my god !

--------

Sinon, comment marche l'assignation d'une variable dans un bloc, pas par rapport à vos class mais en général. Dans le manuel PHP il fournissent un exemple simple que j'ai un peu étoffé :


class template
{

     private $template;
     private $vars;
    
     public function __construct($fichier)
     {
               $this -> template = file_get_contents($fichier);
               $this -> $vars = array();
     }
    
     public function setVariable($name, $var)
     {
          $this->vars[$name] = $var;
     }
    
     public function setBloc($name,$key)
     {
     }

     public function getHtml()
     {
          foreach($this->vars as $name => $value)
          {
               $this->template = str_replace('{' . $name . '}', $value, $this->template);
          }
     }
    
     public function __toString()
     {
          $this->getHtml();
          
          return $this->template;
     }
}


Mais je ne vois pas comment marche les blocs...
Merci de votre aide ;)
byebye.
Hors ligneMalalam Le 27/01/2006 à 10:59 Profil de Malalam Configuration de Malalam

ah ben là, faudra attendre Antho ;-)
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels