在Zend Forms中添加一些html

blu*_*iel 14 php zend-framework zend-form

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

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

多数民众赞成,它需要高于我在表格中的'方法'元素,但就是这样.对于这样一个简单的动作,我找不到任何不涉及我学习火箭科学的方法(即Zend Decorators).

jah*_*jah 28

我现在能想到的唯一方法是在表单中添加一个虚拟元素,并删除除"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();
Run Code Online (Sandbox Code Playgroud)

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

输出:

<div id="wmd-button-bar" class="wmd-panel"></div>
Run Code Online (Sandbox Code Playgroud)

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


use*_*400 8

您可以创建自己的视图帮助程序库 - 应用程序>视图>帮助程序> PlainTextElemet.php

在库文件夹中创建一个文件夹,其名称为App,因此名称为View的文件夹在View中创建帮助文件夹,因此在Helper文件夹中创建一个具有以下相同的PlainTextElement名称的类

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

    }
Run Code Online (Sandbox Code Playgroud)

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

并将下面的代码放在这个类中

class App_Form_Element_PlainText extends Zend_Form_Element_Xhtml {

    public $helper='PlainTextElement';

    public function isValid($value){

        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以在表单中创建自己喜欢的每个HTML代码:

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

        $this->addElement(new App_Form_Element_PlainText('pliantext1', array(
                            'value'=>$someValue,
        )));
Run Code Online (Sandbox Code Playgroud)

不要忘记在你的application.ini中添加fllowing lines:

 autoloaderNamespaces.app = "App_"
 resources.view.helperPath.App_View_Helper="App/View/Helper"
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以尝试这种方式,没有配置,只有一个扩展类引用:http://www.zfsnippets.com/snippets/view/id/50

<?php

/**
 * Form note element
 *
 * @author Ruslan Zavackiy <ruslan.zavackiy@gmail.com>
 * @package elements
 */

/**
 * Loads helper Zend_View_Helper_FormNote
 */

class Custom_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    public $helper = 'formNote';
}
?>
Run Code Online (Sandbox Code Playgroud)

然后

$companies->addElement('note', 'companyNote', array(
            'value' => '<a href="javascript:;" id="addCompany">Add Company</a>'
        ));
Run Code Online (Sandbox Code Playgroud)