2011-09-30 80 views
1

我正在使用Dojo元素创建一个Zend表单,我想用CSS布局表单元素。不幸的是,元素没有像我的表单中的其他元素一样被赋予一个ID。Zend Dojo元素Id缺失

输出

<dt id="purchase_required-label"></dt> 
<dd><table id="widget_purchase_required" class="dijit dijitReset dijitInlineTable disabled dijitTextBox dijitTextBoxDisabled" cellspacing="0" cellpadding="0" wairole="presentation" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse" name="purchase_required" style="display: -moz-inline-stack;" role="presentation" widgetid="purchase_required"></table></dd> 
<dt id="purchase_supplier_id-label"></dt> 
<dd id="purchase_supplier_id-element"></dd> 

示例代码

$purchase_required = new Zend_Dojo_Form_Element_DateTextBox('purchase_required'); 
$purchase_required->setLabel('Required Date'); 
$purchase_required->setAttribs(array("dojoType"=>"dijit.form.DateTextBox")); 
$purchase_required->setRequired(TRUE); 
$purchase_required->addErrorMessage('Please enter date as YYYY-MM-DD'); 
$this->addElement($purchase_required); 

这是bug还是我失去了一些东西?

回答

0

当它覆盖loadDefaultDecorators时,似乎从Zend_Dojo_Form_Element_Dijit中的该元素中删除了id。您可以通过使用类似于Dijit超类中发生的事情来恢复它:Zend_Form_Element

$getId = create_function('$decorator', 
          'return $decorator->getElement()->getId() 
            . "-element";'); 
$purchase_required->addDecorator(
     'HtmlTag', 
     array(
       'tag' => 'dd', 
       'id' => array('callback' => $getId) 
      ) 
);