2009-07-30 3 views
3

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

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

Любые советы будут оценены,

Благодаря

+0

Что ошибка? – UpTheCreek

ответ

2

Вы в первую очередь необходимо удалить декоратор 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'); 
     } 
    } 

} 

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

+0

Спасибо за это решение :) – Andy

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> 
Смежные вопросы