2011-02-10 3 views
4

Я пытаюсь понять, как удалить ярлык из группы отображения, когда вы посмотрите на разметку ниже, вы увидите, что есть dt с идентификационной меткой id и следующим dd , Я хочу удалить их, но сохраняю набор полей.Zend Form Display Decorators

Чтобы добавить группу отображения, я использую этот $this->addDisplayGroup(array(...), 'legend' => 'address'); в пределах мой класс инициализации формы после того, как я добавил каждый из элементов. Есть ли некоторые декораторы, с которыми я могу играть, чтобы удалить элемент, который я не хочу?

<form id="CreateAddress" enctype="application/x-www-form-urlencoded" action="" method="post"> 
    <dl class="zend_form"> 
     <dt id="address-label">&#160;</dt> 
     <dd id="address-element"> 
      <fieldset id="fieldset-address"> 
       <legend>Address</legend> 
       <dl>    
        <dt id="addressLine1-label"> 
         <label for="addressLine1" class="required">Address Line 1</label> 
        </dt> 
        <dd id="addressLine1-element"> 
         <input type="text" name="addressLine1" id="addressLine1" value=""> 
        </dd> 

        ...etc... 

      </fieldset> 
     </dd> 
     ...buttons... 
    </dl> 
</form> 

Спасибо,
Martin

ответ

0

Так что дело?

$group = $form->getDisplayGroup ('the name of the group'); 
$group->removeDecorator ('Zend_Form_Decorator_DtDdWrapper'); 
5

removeDecorator параметр Zend_Form_Decorator_DtDdWrapper не работает, поэтому я использовал:

$group = $form->getDisplayGroup('the name of the group'); 
$group->removeDecorator('DtDdWrapper'); 
1

Так что вам не придется вручную удалить DtDd от каждой группы дисплея по отдельности, вы можете использовать:

foreach ($this->_displayGroups as $dg){ 
      $dg->removeDecorator('DtDdWrapper'); 
     } 
8

Если вы хотите применить его ко всем отображаемым группам формы Zend, определенным (для конкретной формы), то более чистый способ:

$form->setDisplayGroupDecorators(array(
    'FormElements', 
    'Fieldset', 
)); 

ПРИМЕЧАНИЕ: это только изменяет ранее определенные группы отображения.