Zend Dojo 元素 ID 缺失
Posted
技术标签:
【中文标题】Zend Dojo 元素 ID 缺失【英文标题】:Zend Dojo Element Id missing 【发布时间】:2011-09-30 13:08:11 【问题描述】:我正在使用 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);
这是一个错误还是我遗漏了什么?
【问题讨论】:
【参考方案1】:当它覆盖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)
)
);
【讨论】:
以上是关于Zend Dojo 元素 ID 缺失的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Zend_Dojo 表单元素动态添加到 zend_form?
关于Mac安装PHP相关扩展出现Zend/zend_config.h缺失的问题记录
Zend_Db_Table 选择缺失数据,直接PHP查询ok
如何使用 DOJO 元素以 zend 形式分别呈现标签和元素