从Zend_Form_Element文件中删除格式

时间:2009-07-30 10:21:26

标签: php zend-framework

我正在尝试从文件元素周围删除dt和dd修饰符。

通常我将$element->setDecorators(array(array('ViewHelper')));应用于表单元素。
但是,在Zend_Form_Element_File的情况下,这不适用于输出错误。

任何建议都将不胜感激,

由于

3 个答案:

答案 0 :(得分:2)

首先需要从表单中删除DtDdWrapper装饰器。 其次,从每个元素中获取Label装饰器,并将tag属性设置为null, 最后,对于每个元素,删除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');
        }
    }

}

这将保留文件元素的重要文件元素装饰器,同时从所有元素中剥离其他元素。

答案 1 :(得分:1)

我发现如果我需要移除多个装饰器,则更容易重新实现整个窗体的视图。更快速编程,而不是与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>

答案 2 :(得分:0)

试试这个:

$myFormElement->removeDecorator('DtDdWrapper');