Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-11-2010 16:13:49

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

[Zend_Form][ZF 1.10] Suppression du tag du décorateur label

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 :

Code:

<?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

Code:

<?php $this->form->titre->getDecorator('label')->setTag(null) ; ?>
?>

Pouvez vous m'aider ?

Hors ligne

 

#2 10-11-2010 18:50:26

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Form][ZF 1.10] Suppression du tag du décorateur label

Code:

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

 

#3 11-11-2010 12:33:13

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [Zend_Form][ZF 1.10] Suppression du tag du décorateur label

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.

Code:

<?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

 

#4 26-12-2010 14:45:29

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: [Zend_Form][ZF 1.10] Suppression du tag du décorateur label

Même problème ici... Très bizarre !

Hors ligne

 

#5 26-12-2010 15:04:32

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: [Zend_Form][ZF 1.10] Suppression du tag du décorateur label

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 :


Code:

// 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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages