2009-07-30 6 views
3

J'essaye de supprimer les décorateurs dt et dd d'un élément de fichier.Suppression de la mise en forme de Zend_Form_Element_File

Habituellement, j'applique $element->setDecorators(array(array('ViewHelper'))); à l'élément de formulaire.
Toutefois, ceci n'est pas applicable dans le cas de Zend_Form_Element_File car une erreur est générée.

Tout conseil serait apprécié,

Merci

+0

Ce qui est l'erreur? – UpTheCreek

Répondre

0

essayez ceci:

$myFormElement->removeDecorator('DtDdWrapper'); 
2

Vous devez tout d'abord d'enlever le décorateur DtDdWrapper de la forme. Deuxièmement, à partir de chaque élément, récupérez le décorateur Label et définissez la propriété tag sur null, et enfin, pour chaque élément, supprimez le décorateur HtmlTag.

ala:

<?php 
class My_Form extends Zend_Form 
{ 
    public function init() 
    { 
     //Add elements first. 

     $this->removeDecorator('HtmlTag'); 
     foreach ($this->getElements() as $element) { 
      $element->getDecorator('Label')->setTag(null); 
      $element->removeDecorator('HtmlTag'); 
      $element->removeDecorator('DtDdWrapper'); 
     } 
    } 

} 

Cela laissera l'élément de fichier important de décorateur Élément de fichier intact, tout en dépouillant les autres de tous vos éléments.

+0

Merci pour cette solution :) – Andy

1

Je trouve que si j'ai besoin d'enlever plus de deux décorateurs, il est plus facile de simplement réimplémenter la vue entière du formulaire. Plus rapide à programmer, au lieu de lutter avec ZF.

<?php 
$form->setDecorators(array(
    array('ViewScript', array('viewScript' => 'form.phtml')) 
)); 
?> 

Et puis le form.phtml:

<?php 
$form = $this->element; 
?> 
<?php if(sizeof($form->getErrorMessages()) != 0) :?> 
<div class="error-message"><?php echo $this->formErrors($form->getErrorMessages());?></div> 
<?php endif; ?> 
<form 
    action="<?php echo $this->escape($form->getAction()); ?>" 
    method="<?php echo $this->escape($form->getMethod()); ?>" 
    id="<?php echo $this->escape($form->getId()); ?>"> 
    <table> 
    <tr> 
     <th><?php echo $this->escape($email->getLabel()); ?></th> 
     <td><?php echo $email->renderViewHelper(); ?> 
     <?php 
     if ($email->hasErrors()) { 
      echo $this->formErrors($email->getMessages()); 
     } 
     ?> 
     </td> 
    </tr> 
    </table> 
</form>