Çıkarma Zend_Form_Element_File biçimlendirme

3 Cevap php

Bir dosya elemanı etrafında dt ve dd dekoratörler kaldırmak çalışıyorum.

Usually I apply $element->setDecorators(array(array('ViewHelper'))); to the form element.
However this is not applicable in the case of Zend_Form_Element_File as an error is output.

Herhangi bir tavsiye takdir,

Teşekkürler

3 Cevap

You firstly need to remove the DtDdWrapper decorator from the form. Secondly, from each element, get the Label decorator, and set the tag property to null, and lastly, for each element, remove the 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');
        }
    }

}

Tüm elementlerden diğerlerini sıyırma sırasında bu, sağlam dosya elemanın önemli Dosya Eleman dekoratör bırakacaktır.

Ben dekoratörler bir çift daha kaldırmak için gerekiyorsa ben buluyorum, sadece tüm formun görünümünü reimplement daha kolaydır. Hızlı program, yerine ZF ile güreş.

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

Ve sonra 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>

Bu deneyin:

$myFormElement->removeDecorator('DtDdWrapper');