Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-01-2011 23:25:53

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

[Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Pour faire de la mise en forme très personnalisée, j'ai écrit ce bout de code dans mon constructeur de la classe form

Code:

$this->setDecorators( array( array('ViewScript', array('viewScript' => 'ressources/partialform.phtml'))));

Ensuite j'ai crée le fichier 'ressources/partialform.phtml'

Code:

<form method="post" id="myform">
<fieldset>
    <legend><?php echo $this->translate('Ressources Data'); ?></legend>
    <ul class="formRegister">
      
            <li>
                    <span>
                        
                    <?php echo $this->formLabel($this->_elements['act']->getName(),
                            $this->translate($this->_elements['act']->getLabel())) ?>
                    <?php echo $this->_elements['act']->getDescription() ?>
                    </span>

                    <?php echo $this->{$this->_elements['act']->helper}(
                         $this->_elements['act']->getName(),
                         $this->_elements['act']->getValue(),
                         $this->_elements['act']->getAttribs(),
                         (method_exists($this->_elements['act'],'getMultiOptions')) ? $this->_elements['act']->getMultiOptions() : '') ?>
      
                     <?php echo $this->formErrors($this->_elements['act']->getMessages()) ?>
        </li>
      
    </ul>

................

  <p><input type="submit" id='submit' value="<?php echo $this->translate('Ajouter'); ?>" /></p>
</fieldset>
</form>

J'obtiens cette erreur

Code:

Fatal error: Call to a member function getName() on a non-object in c:\xampp\htdocs\....\views\scripts\ressources\partialform.phtml on line 9

Dernière modification par ziedb (08-01-2011 00:54:47)

Hors ligne

 

#2 07-01-2011 12:49:33

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

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Dans ton contrôleur :

Code:

$form = new MonSuperFormulaire();

...

$this->view->form = $form;

Dans la vue de ton action :

Code:

echo $this->form;

Dans ton fichier viewpartial.phtml :

pour te référer au formulaire :

Code:

$this->element->getAction(); // Sans nom d'élément, cela se réfère au Zend_Form

$this->element->nomElement->maFonction();

Hors ligne

 

#3 08-01-2011 00:54:10

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Merci ça marche bien

Code:

<form method="post" id="myform">
<fieldset>
    <legend><?php echo $this->translate('Ressources Data'); ?></legend>
    <ul class="formRegister">
      
            <li>
                    <span>
                        
                    <?php echo $this->formLabel($this->element->act->getName(),
                            $this->translate($this->element->act->getLabel())) ?>
                    <?php echo $this->element->act->getDescription() ?>
                    </span>

                    <?php echo $this->{$this->element->act->helper}(
                         $this->element->act->getName(),
                         $this->element->act->getValue(),
                         $this->element->act->getAttribs(),
                         (method_exists($this->element->act,'getMultiOptions')) ? $this->element->act->getMultiOptions() : '') ?>
      
                     <?php echo $this->formErrors($this->element->act->getMessages()) ?>
        </li>
      
    </ul>
  <p><input type="submit" id='submit' value="<?php echo $this->translate('Ajouter'); ?>" /></p>
</fieldset>
</form>

Hors ligne

 

#4 08-01-2011 10:11:23

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

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Il y a plus simple, tu peux également faire un simple :

echo $this->element->act->renderLabel . $this->element->act->renderViewHelper;

Hors ligne

 

#5 09-01-2011 14:07:25

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

bakura a écrit:

Il y a plus simple, tu peux également faire un simple :

echo $this->element->act->renderLabel . $this->element->act->renderViewHelper;

J'ai essayé cette écriture ça ne marche pas sad

Hors ligne

 

#6 09-01-2011 14:56:10

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Je pense qu'il fallait comprendre :

Code:

echo $this->element->act->renderLabel() . $this->element->act->renderViewHelper();

wink


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 09-01-2011 18:47:14

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Merci Mikael, cependant j'ai encore une autre question par rapport à cette méthode :
Comment éliminer les décorateur <dt> autour du label?

Hors ligne

 

#8 10-01-2011 15:17:13

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

Re: [Résolu]ZF1.11 Zend_Form et View Script Personnalisé

Il faut que tu supprimes les labels en faisant un setTag(). De mémoire (syntaxe à vérifier), tu fous ça au début du la vue (ou soit directement dans le formulaire), avant d'afficher quoi que ce soit (à faire dans le view script) :

Code:

foreach($this->element->getElements() as $element)
   $element->getDecorator('label')->setTag('');

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