2009-07-30 5 views
3

Ich versuche, die dt und dd Dekoratoren aus einem Dateielement zu entfernen.Entfernen der Formatierung von Zend_Form_Element_File

Normalerweise wenden Sie $element->setDecorators(array(array('ViewHelper'))); auf das Formularelement an.
Dies gilt jedoch nicht für Zend_Form_Element_File, da ein Fehler ausgegeben wird.

Jede Beratung geschätzt würde,

Dank

+0

Was ist der Fehler? – UpTheCreek

Antwort

0

try this:

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

Sie zunächst die DtDdWrapper Dekorateur aus der Form entfernen müssen. Zweitens, von jedem Element, erhalten Sie die Label-Dekorator, und legen Sie die Tag-Eigenschaft auf null, und schließlich, für jedes Element, entfernen Sie die HtmlTag Decorator.

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'); 
     } 
    } 

} 

So bleibt die intakte wichtige Datei Element Dekorateur Datei Element, während die anderen aus allen Elementen Strippen.

+0

Danke für diese Lösung :) – Andy

1

Ich finde, wenn ich mehr als ein paar Dekoratoren entfernen muss, ist es einfacher, nur die Ansicht des gesamten Formulars neu zu implementieren. Schneller zum Programmieren, anstatt mit ZF zu ringen.

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

Und dann die 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> 
Verwandte Themen