如何使用装饰器将多个div或fieldset添加到zend_form?

Mal*_*yer 2 php zend-framework decorator zend-form zend-decorators

我正在尝试在zend_form显示组中生成此html层次结构:

    <div class="settings">
     <div class="dashed-outline"> //want to add this div
       <fieldset disabledefaultdecorators="1" id="fieldset-settings">
          <legend>Cards</legend>
          </fieldset>
        </div>    
    </div>
Run Code Online (Sandbox Code Playgroud)

这就是我目前所拥有的:

    <div class="settings">
       <fieldset disabledefaultdecorators="1" id="fieldset-settings">
          <legend>Cards</legend>
          </fieldset>
    </div>
Run Code Online (Sandbox Code Playgroud)

这是上面的代码:

    $form->addDisplayGroup($flashcardGroup,
                           'settings',
                            array(
                                'legend' => 'Cards',
                                'disableDefaultDecorators' => true,
                                'decorators' => array(
                                                    'FormElements',
                                                    'Fieldset',
                                                     array('HtmlTag',array('tag' => 'div',  'class' => 'settings')),  
                                                    )
                                )
                            );
Run Code Online (Sandbox Code Playgroud)

如何在这里添加额外的div?

gna*_*arf 6

如果要在Zend_Form中使用相同的装饰器两次,则可以array(array('alias'=>'Decorator'), $options)使用setDecorators数组语法进行传递.此外,disableDefaultDecorators如果您通过decorators选项,则不需要使用

$form->addDisplayGroup($flashcardGroup,
  'settings',
  array(
    'legend' => 'Cards',
    'decorators' => array(
      'FormElements',
      'Fieldset',
      // need to alias the HtmlTag decorator so you can use it twice
      array(array('Dashed'=>'HtmlTag'), array('tag'=>'div', 'class'=>'dashed-outline')),
      array('HtmlTag',array('tag' => 'div',  'class' => 'settings')),  
    )
  )
);
Run Code Online (Sandbox Code Playgroud)