【问题标题】:zend form element add div after input fieldZend 表单元素在输入字段后添加 div
【发布时间】:2013-05-15 10:00:04
【问题描述】:

我的 zend 表单生成以下代码:

<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>

但在某些情况下(在单独的装饰器中处理)我需要在输入字段旁边添加更多 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>

【问题讨论】:

    标签: zend-framework zend-decorators


    【解决方案1】:

    您可以在表单文件中为表单元素添加装饰器,如下所示

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

    我想和你分享一个有趣的Link 来了解zend form 的基本工作原理。

    如果我能帮助你更多,请告诉我。

    【讨论】:

    • 感谢您的帖子。我不明白。我在我的班上,女巫扩展了“Zend_Form_Decorator_Abstract”。在 render()-Function 中,我将获得元素的渲染内容(看起来像我的第一个代码)。如果我现在使用 $element = $this->getElement() 在渲染函数中获取元素,我就可以添加一个新的装饰器。但这将不再使用,因为元素的 html 已经呈现。那么我该怎么做才能得到我期望的结果?希望你明白我的意思。
    • 是的,您是否以正确的方式创建表单。但正如我在回答中所描述的那样,您必须将装饰器添加到您的表单元素中,我认为上面对您有用。或者请仔细参考链接,这样您就可以清楚地知道根据需要将 html 添加到元素中。
    猜你喜欢
    • 2023-03-26
    • 2015-05-24
    • 2013-03-15
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2013-10-19
    • 2018-02-18
    • 2015-04-21
    相关资源
    最近更新 更多