Zend Dojo元素Id丢失



我正在使用Dojo元素创建一个Zend表单,我想使用CSS来布局表单元素。不幸的是,该元素没有像我的表单中的所有其他元素一样被赋予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还是我错过了什么?

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

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

最新更新