2011-11-16 55 views
2

我有这样的形式:Zend框架装饰子窗体中添加类标签DD包装标签

class Request_Form_Prova extends Zend_Form 
{ 

    public function init() 
    { 
     $this->setMethod('post'); 

     $SubForm_Step = new Zend_Form_SubForm(); 
     $SubForm_Step->setAttrib('class','Step'); 
     $this->addSubform($SubForm_Step, 'Chicco'); 

     $PrivacyCheck = $SubForm_Step->createElement('CheckBox', 'PrivacyCheck'); 
     $PrivacyCheck->setLabel('I have read and I agre bla bla...') 
        ->setRequired(true) 
        ->setUncheckedValue(''); 
     $PrivacyCheck->getDecorator('Label')->setOption('class', 'inline'); 

     $SubForm_Step->addElement($PrivacyCheck); 


     $SubForm_Step->addElement('submit', 'submit', array(
      'ignore' => true, 
      'label' => 'OK', 
     )); 
    } 
} 

生成这个HTML:

<form enctype="application/x-www-form-urlencoded" method="post" action=""> 
    <dl class="zend_form"> 
     <dt id="Chicco-label">&nbsp;</dt> 
     <dd id="Chicco-element"> 
      <fieldset id="fieldset-Chicco" class="Step"> 
       <dl> 
        <dt id="Chicco-PrivacyCheck-label"><label for="Chicco-PrivacyCheck" class="inline required">I have read and I agre bla bla...</label></dt> 
        <dd id="Chicco-PrivacyCheck-element"> 
         <input type="hidden" name="Chicco[PrivacyCheck]" value=""><input type="checkbox" name="Chicco[PrivacyCheck]" id="Chicco-PrivacyCheck" value="1"> 
        </dd> 
        <dt id="submit-label">&nbsp;</dt> 
        <dd id="submit-element"> 
         <input type="submit" name="Chicco[submit]" id="Chicco-submit" value="OK"> 
        </dd> 
       </dl> 
      </fieldset> 
     </dd> 
    </dl> 
</form> 

我如何添加一个class="Test"<dd id="Chicco-element">元素?
为了有它这样的:<dd id="Chicco-element" class="Test">

我想类似的东西,但它不工作:

$SubForm_Step->getDecorator('DdWrapper')->setOption('class', 'Test'); 

$SubForm_Step->getDecorator('DtDdWrapper')->setOption('class', 'Test'); 

我该怎么办呢?
如何在另一个DL元素中包装子表单的DD和DT元素?

就像是:

<dl class="zend_form"> 
    <dl> 
    <dt id="Chicco-label">&nbsp;</dt> 
    <dd id="Chicco-element"> 
     <fieldset id="fieldset-Chicco" class="Step"> 
      <dl> 
      ....... 

回答

0

不能添加类的方式。退房的源文件Zend_Form_Decorator_DtDdWrapper开始在线67:

return '<dt id="' . $elementName . '-label">' . $dtLabel . '</dt>' . 
    '<dd id="' . $elementName . '-element">' . $content . '</dd>'; 

你可以用自己的类扩展的装饰,并改写渲染方法的类添加到标签。