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 形式分别呈现标签和元素

Zend_Dojo_Form_Element 创建简单元素(“充当” Zend_Form_Element)

如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法