Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Lorsque je fais une boucle sur tous les éléments du formulaire et que j'attribue la valeur "null" au décorateur label j'ai une erreur : Fatal error: Call to a member function setTag() on a non-object
Ce qui provoque l'erreur :
<?php foreach($this->form->getElements() as $element) { $element->getDecorator('label')->setTag(null); } ?>
Alors que ce code qui est dans la même vue fonctionne parfaitement
<?php $this->form->titre->getDecorator('label')->setTag(null) ; ?> ?>
Pouvez vous m'aider ?
Hors ligne
Fatal error: Call to a member function setTag() on a non-object
Ça veut dire que tu tentes d'appeler la function setTag sur quelque chose d'autre qu'un objet (probablement NULL).
J'ai l'impression que le décorateur n'existe pas encore, t'as boucle se fait où exactement?
Hors ligne
Bonjour,
Je fais ma boucle dans une vue (create.phtml) pourtant : (Comme la boucle ne fonctionne pas, elle est commentée et j'appelle mes éléments un par un.
<?php foreach($this->form->getElements() as $element) { //$element->getDecorator('label')->setTag(null); } ?> <?php $this->form->titre->getDecorator('label')->setTag(null) ; ?> <?php $this->form->soustitre->getDecorator('label')->setTag(null) ; ?> <?php $this->form->chapeau->getDecorator('label')->setTag(null) ; ?> <?php $this->form->slug->getDecorator('label')->setTag(null) ; ?> <?php $this->form->content->getDecorator('label')->setTag(null) ; ?> <?php $this->form->image->getDecorator('label')->setTag(null) ; ?> <?php $this->form->status->getDecorator('label')->setTag(null) ; ?> <?php $this->form->alaune->getDecorator('label')->setTag(null) ; ?> <?php $this->form->idCategorie->getDecorator('label')->setTag(null) ; ?> <form action="<?php echo $this->escape($this->form->getAction()); ?>" method="<?php echo $this->escape($this->form->getMethod()); ?>" class="formident"> <div class="ligne"> <div class="label"><?php echo $this->form->titre->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->titre->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->soustitre->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->soustitre->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->chapeau->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->chapeau->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->slug->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->slug->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->content->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->content->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->image->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->image->renderFile(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->status->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->status->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->alaune->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->alaune->renderViewHelper(); ?></div> </div> <div class="ligne"> <div class="label"><?php echo $this->form->idCategorie->renderLabel(); ?></div> <div class="champ"><?php echo $this->form->idCategorie->renderViewHelper(); ?></div> </div> <div class="ligne"> <div style="text-align:center;"><?php echo $this->form->submit->renderViewHelper(); ?></div> </div> </form>
Hors ligne
Même problème ici... Très bizarre !
Hors ligne
Ok, trouvé. En fait c'est étonnant que ça marche dans la vue, parce que ça ne devrait pas. En fait, certains tags n'ont pas de décorateur label (par exemple, submit), donc ça plante.
Il faut faire un test pour vérifier si l'élément a bien le décorateur :
// Supprime tous les tags <dt> des labels foreach ($this->getElements() as $element) { $decorator = $element->getDecorator('label'); if ($decorator) $decorator->setTag(null); }
Dernière modification par bakura (26-12-2010 15:04:46)
Hors ligne
Pages: 1