【问题标题】:Zend Form Replace DL tags with P tagZend Form 用 P 标签替换 DL 标签
【发布时间】:2013-02-26 17:32:55
【问题描述】:

我正在使用 Zend_Form。我想制作一个忘记密码的表格,像这样放在一行上:

标签:[字段] [提交按钮]

而且我希望它都在一个段落标签中。我希望段落标签是 inside 表单标签。所以,基本上,我想用 P 标签替换 Zend_Form 的默认 DL 标签。我可以做到,有点,但不完全是。

如果我使用默认值,像这样:

class Application_Form_Forgot {
    public function init() {
        // my fields, no special decorators...
    }
}

生成这个 HTML:

<form {the attributes} ><dl class="zend_form"> {the fields} </dl></form>

我想要这个 HTML:

<form {the attributes} ><p> {the fields} </p></form>

这是我尝试过的:

class Application_Form_Forgot {
    public function init() {
        // my fields...

        $this->setDecorators(
            array(
                'FormElements',
                'Form',
                array('HtmlTag', array('tag' => 'p')),
            )
        );
    }
}

但这会产生这个 HTML:

<p><form {the attributes} > {the fields} </form></p>

段落标签围绕着表单。不完全是我想要的。

我也试过了:

  • 在 StackOverflow 和其他地方搜索并阅读一堆关于如何删除 DL 标签的帖子。如果我在某个地方漏掉了答案并且这是重复的,请原谅我。
  • 阅读 Zend 源代码以找出方法。我找到了 DlDt 装饰器,但这似乎只适用于元素,而不适用于表单。
  • 开始着手将段落标签置于表单之外并继续我的生活。

有人能指出我正确的方向吗?如果这可能的话?

谢谢, 菲利普

【问题讨论】:

    标签: php zend-framework zend-form


    【解决方案1】:

    你很亲密,改变你必须做的:

     $this->setDecorators(
         array(
             'FormElements',
             array('HtmlTag', array('tag' => 'p'))
             'Form',             
         )
     );
    

    如果你想象装饰器工作时,每个装饰器都“围绕”之前的内容,按照这个顺序,它会渲染表单元素,然后围绕它放置段落,然后围绕它放置表单标签。

    【讨论】:

    • 嘘!谢谢!谢谢你的解释。这完全有道理。
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2015-07-28
    相关资源
    最近更新 更多