我正在使用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)
)
);