Удаление форматирования из Zend_Form_Element_File - PullRequest
3 голосов
/ 30 июля 2009

Я пытаюсь удалить декораторы dt и dd вокруг элемента файла.

Обычно я применяю $element->setDecorators(array(array('ViewHelper'))); к элементу формы.
Однако это не применимо в случае Zend_Form_Element_File, поскольку выводится ошибка.

Буду признателен за любой совет,

Спасибо

Ответы [ 3 ]

2 голосов
/ 30 июля 2009

Сначала необходимо удалить из формы декоратор DtDdWrapper. Во-вторых, из каждого элемента получите декоратор Label и установите для свойства tag значение null, и, наконец, для каждого элемента удалите декоратор HtmlTag.

ала:

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

}

Это оставит нетронутым важный элемент File File Element, в то же время удалив остальные из всех ваших элементов.

1 голос
/ 05 августа 2009

Я считаю, что если мне нужно удалить больше, чем пару декораторов, проще просто переопределить представление всей формы. Быстрее программировать, вместо борьбы с ZF.

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

А затем 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>
0 голосов
/ 30 июля 2009

попробуйте это:

$myFormElement->removeDecorator('DtDdWrapper');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...