2013-05-15 46 views
1

我的Zend形式产生下面的代码:Zend的表单元素输入域后,添加的div

<dt id="register_username-label"> 
<label for="register_username" class="required">Membername*</label> 
</dt> 
<dd id="register_username-element"> 
<input type="text" name="register_username" id="register_username" value="" /> 
</dd> 

,但在某些情况下(在separete装饰处理)我需要一些更多的HTML旁边的添加,输入字段(也在dd标签中)。我有Zend_Form_Element_Text女巫的情况下,我可以添加一些装饰,但我不知道如何完成这件事:(

解决方案应该是这样的:

<dt id="register_username-label"> 
<label for="register_username" class="required">Membername*</label> 
</dt> 
<dd id="register_username-element"> 
<input type="text" name="register_username" id="register_username" value="" /> 
<div class="validate"><div class="validate-check"></div></div> 
</dd> 

回答

1

您可以添加装饰您的在窗体文件就像下面

$form->addElement(
    'text', 
    'register_username', 
    array(
     'required' => false, 
     'decorators' => array(
      array(
       'HtmlTag', array(
        'tag' => 'div', 
        'class' => 'validate' 
       ) 
      ) 
     ) 
    ) 
); 

而更多的我想表单元素与大家分享一个有趣的Link理解基本上是如何Zend的形式运作。

请让我知道,如果我可以帮助你更多。

+0

感谢您的帖子。我不明白。我在我的课上扩展了“Zend_Form_Decorator_Abstract”。在render()函数中,我会得到元素的呈现内容(看起来像我的第一个代码)。如果我现在使用$ element = $ this-> getElement()获取渲染函数中的元素,我可以添加一个新的装饰器。但不会再被使用,因为元素的html已经被渲染了。所以我必须做什么,我得到了我期待的结果?希望你明白我的意思。 – roman

+0

是的,你正在做正确的方式来创建窗体。但正如我在我的回答中所描述的那样,您必须将装饰器添加到您的表单元素中,我认为上述内容可以为您工作。或者请仔细参考链接,以便您可以清楚地将html添加到元素中。 – liyakat

相关问题