Zend Form用P标签替换DL标签

时间:2013-02-26 17:32:56

标签: php zend-framework zend-form

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

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

我希望它都在一个段落标签内。我希望段落标记在里面表单标记。所以,基本上,我想用一个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装饰器,但这似乎只适用于元素,而不是形式。
  • 想要掌握在表格之外使用段落标记并继续我的生活。

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

谢谢, 菲利普

1 个答案:

答案 0 :(得分:1)

你很亲密,改变你所拥有的:

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

如果你想象装饰工作的每一个渲染'围绕'以前的东西,用这个顺序渲染表单元素,然后围绕它放置段落,然后围绕它放置表单标记。