Hametsu |
Le 25/01/2006 à 10:15 |
|
|
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. |
Anthony |
Le 25/01/2006 à 21:07 |
|
 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) -- 
|
Hametsu |
Le 26/01/2006 à 12:53 |
|
|
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 :'( |
Malalam |
Le 26/01/2006 à 13:23 |
|

|
Hello  ,
essaye un echo $form -> __toString();
directement.
Sinon, comment as tu mixé les deux ? |
Hametsu |
Le 26/01/2006 à 18:13 |
|
|
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"... |
Malalam |
Le 26/01/2006 à 18:19 |
|

|
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... ;-) |
Anthony |
Le 26/01/2006 à 23:54 |
|
 Admin |
Malalam > heu la fonction unregister elle est pas dans mon code, t'as fait une fonction unregister dans ta classe formulaire ? -- 
|
Malalam |
Le 27/01/2006 à 08:44 |
|

|
Heu nan, lol. Mais il a dit que c'était pour une classe de session perso. aucun rapport avec nos codes, ce point là :) |
Hametsu |
Le 27/01/2006 à 09:52 |
|
|
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. |
Malalam |
Le 27/01/2006 à 10:59 |
|

|
ah ben là, faudra attendre Antho ;-) |