添加一些 html 到 Zend Forms

2022-08-31 00:21:06

我正在寻找一个简单的代码,可以让我将以下html添加到我的zend表单中:

<div id="wmd-button-bar" class="wmd-panel"></div>

就是这样,它需要在形式上高于我的“方法”元素,但仅此而已。对于如此简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators)。


答案 1

我目前能想到的唯一方法是向表单添加一个虚拟元素,并删除除具有您在问题中指定的属性的“HtmlTag”之外的所有装饰器。删除修饰器意味着不会呈现实际元素 - 仅呈现 HtmlTag 修饰器。

所以假设你的表格是$form:

$form->addElement(
    'hidden',
    'dummy',
    array(
        'required' => false,
        'ignore' => true,
        'autoInsertNotEmptyValidator' => false,
        'decorators' => array(
            array(
                'HtmlTag', array(
                    'tag'  => 'div',
                    'id'   => 'wmd-button-bar',
                    'class' => 'wmd-panel'
                )
            )
        )
    )
);
$form->dummy->clearValidators();

请注意,您希望阻止对元素进行任何验证。这只是一种方式 - 可能还有其他方式。

输出:

<div id="wmd-button-bar" class="wmd-panel"></div>

有一篇描述装饰者的好文章


答案 2

您可以创建自己的视图助手 libraray--App>View>Helper>PlainTextElemet.php

在库文件夹中创建一个名称为 App 的文件夹,以便名称为“查看”的文件夹,以便在“视图”中创建帮助程序文件夹,以便在“帮助程序”文件夹中创建一个名称与以下内容相同的纯文本元素的类

 class App_View_Helper_PlainTextElement extends Zend_View_Helper_FormElement {

        public function PlainTextElement($name, $value = null, $attribs = null) {
            $info = $this->_getInfo($name, $value, $attribs);
            extract($info); // name, value, attribs, options, listsep, disable
            if (null === $value) {$value = $name;}

            return $value;
          }

    }

然后在上面的libray中创建一个类App>Form>Element>PlainText.php

并将 folowing 代码放在这个类中

class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {

    public $helper='PlainTextElement';

    public function isValid($value){

        return true;
    }
}

现在,在您的表单中,您可以创建所需的每个html代码:

$someValue = '<div id="wmd-button-bar" class="wmd-panel"></div>';

        $this->addElement(new App_Form_Element_PlainText('pliantext1', array(
                            'value'=>$someValue,
        )));

不要忘记在您的应用程序中.ini也添加翻滚行:

 autoloaderNamespaces.app = "App_"
 resources.view.helperPath.App_View_Helper="App/View/Helper"

推荐