如何以Zend形式呈现一些html?

时间:2011-02-26 01:55:19

标签: zend-framework zend-form zend-form-element

在我的表格中我需要这个:

<li class  ="af_title"><div>Contact form</div></li>

据我所知,如果我需要一个文本字段 - 那么我只需创建Zend_Form_Element_Text并在其周围包装HtmlTag装饰器 - 对吗?

的问题:

1)我如何生成div表单元素,以便可以在其周围包装装饰器?

2)嗯。 - 我如何将所述元素的内容设置为“联系表单”?

感谢:)

1 个答案:

答案 0 :(得分:4)

要将联系表单包裹在div <li class ="af_title">$yourForm = new YourForm(); $yourForm->addDecorator(array('div' => 'HtmlTag'), array('tag' => 'div')); $yourForm->addDecorator(array('li' => 'HtmlTag'), array('tag' => 'li', 'class' => 'af_title')); ,您可以执行以下操作:

class My_Form_Element_Div extends Zend_Form_Element {
     /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formDiv';

    public function __construct($spec, $options = null) {
        parent::__construct($spec, $options);
        $this->removeDecorator('label');
        $this->removeDecorator('htmlTag');

    }

}

编辑:

我看到你说的是div形式元素。这样的元素不存在,但您可以轻松创建它。为此,您需要两件事:新表单元素(即div元素)和表单视图助手,它将负责生成html。我允许自己准备这两个元素的简单例子来表明我的意思:

APPLICATION_PATH中的Div.php。 /形式/元素

class My_View_Helper_FormDiv extends Zend_View_Helper_FormElement {


    public function formDiv($name, $value = null, $attribs = null) {  

        $class = '';

        if (isset($attribs['class'])) {
             $class = 'class = "'. $attribs['class'] .'"';
        }

        return "<li $class><div>$value</div></li>";
    }

}
在APPLICATION_PATH中

FormDiv.php。 /视图/助手

    $div = new My_Form_Element_Div('mydiv');
    $div->setValue('Contact form')->setAttrib('class', 'af_title');
    $this->addElement($div);

有了这个,您只需将div表单元素添加到其init()方法中的任何表单元素,如下所示:

{{1}}