我正在尝试从文件元素周围删除dt和dd修饰符。
通常我将$element->setDecorators(array(array('ViewHelper')));
应用于表单元素。
但是,在Zend_Form_Element_File
的情况下,这不适用于输出错误。
任何建议都将不胜感激,
由于
答案 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');