Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
$this->setDecorators( array( array('ViewScript', array('viewScript' => 'ressources/partialform.phtml'))));
Ensuite j'ai crée le fichier 'ressources/partialform.phtml'
<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
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
Dans ton contrôleur :
$form = new MonSuperFormulaire(); ... $this->view->form = $form;
Dans la vue de ton action :
echo $this->form;
Dans ton fichier viewpartial.phtml :
pour te référer au formulaire :
$this->element->getAction(); // Sans nom d'élément, cela se réfère au Zend_Form $this->element->nomElement->maFonction();
Hors ligne
Merci ça marche bien
<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
Il y a plus simple, tu peux également faire un simple :
echo $this->element->act->renderLabel . $this->element->act->renderViewHelper;
Hors ligne
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
Hors ligne
Je pense qu'il fallait comprendre :
echo $this->element->act->renderLabel() . $this->element->act->renderViewHelper();
Hors ligne
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
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) :
foreach($this->element->getElements() as $element) $element->getDecorator('label')->setTag('');
Hors ligne
Pages: 1