Zend框架:插入DIV和我的表格图片(Zend Framework: Insert DIV and

2019-06-28 06:14发布

我需要插入这样的HTML代码在我的Zend形式:

<div class="myClass1" id="myId1" style="display: none;"><img src="images/myImage.jpg" /></div>

什么会在上面的html代码Zend框架的代码。 我试着用Create_Element但它总是创建一个div标签内的按钮。 请举一个例子代码。 谢谢

Answer 1:

我创建了一个名为“HTML”的自定义元素。 我加Html.php到/表格/元素:


/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * HTML form element
 * 
 */
class Zend_Form_Element_Html extends Zend_Form_Element_Xhtml
{
    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formHtml';
}

其次,我不得不添加一个视图助手FormHtml.php(我把它放在应用程序/视图/佣工):


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';

/**
 * Helper to show HTML
 *
 */
class Zend_View_Helper_FormHtml extends Zend_View_Helper_FormElement
{
    /**
     * Helper to show a html in a form
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formHtml($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // Render the button.
        $xhtml = 'view->escape($id) . '">'
            . $this->_htmlAttribs($attribs)
            . $this->view->escape($value) . '';

        return $xhtml;
    }
}

然后,您可以添加HTML到您的格式如下:


$form->createElement('html', 'someid', array('value'=>'gna

foobar

'));

可能有一些更简化成为可能。



Answer 2:

如果您要创建一个表单元素,我认为你必须覆盖isValid()方法,如下面的代码,或者你的“价值”就会消失在验证错误:

class RenomoZF_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formNote';

    public function isValid($value, $context = null) {
      return TRUE; 
    }

}


Answer 3:

您可以使用“笔记”元素类型通过将标记为元素的值中添加HTML。



Answer 4:

这是准完成了ZF 1.10。 似乎有人做了一个Zend_View_Helper_FormNote类,所以你可以插入任意(CEPT用于装饰)HTML。

要使用它,你必须扩展Zend_Form_Element_Xhtml。

<?php

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Note form element
 * 
 */
class MyNS_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formNote';
}

然后,使用表格插件加载器,表单/元素类添加到窗体对象。 我把它放在我的库文件夹(myns名字/表格/元/ Note.php)。

 $yourForm= new Zend_Dojo_Form();
 $yourForm->addPrefixPath("MyNS_Form", "MyNS/Form/");

现在,你可以调用它,就像任何元素。

 $yourForm->addElement(
                'note',
                'myElementId',
                array(
                 'value'=>'<a href="#">omgwtfbbq</a>'
                )
            )

正如我之前提到的,这仍然在包装装饰你的代码,但它的解决方案预建到ZF。



Answer 5:

有同样的问题只是用来从tomas.fejfar评论如下。

array(escape => false)

e.g. 

$decorators = array(
    'ViewHelper',
    'Label',
    array('Description', array('escape' => false,)),
    'Errors')
);

工作一种享受。

干杯



Answer 6:

我通常使用与阵列描述(逃逸=>假)选项来渲染HTML形式。



Answer 7:

你有没有考虑一个形式ViewScript? 见这个讨论 。



Answer 8:

随着上述方法的价值FormNote还是消失在验证错误提交表单!

编辑:可以删除,以覆盖isValid()问题了。



文章来源: Zend Framework: Insert DIV and Image in my form