Zend Form Decorator 1.12版本

时间:2014-01-28 14:33:52

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

大家好我正试图用Zend渲染这个html结构:

<div id="medias" class="item">
    <h2> Medias </h2>
    <a id="addmedia" href="#">
        <img alt="" src="images/bigbtn-add.png">
    </a>
</div>

更新1:

这是我创建media_img元素的方式:

$media_img = new Zend_Form_Element_Image('media_img');
$media_img->setImage("/img/bigbtn-add.png");
$this->addElement($media_img);

使用此:

$this->setElementDecorators(array(
    'ViewHelper',
    'HtmlTag', array('HtmlTag', array('tag' => 'a', 'id' => 'addmedia','href' => '#'))
),
array('media_img')
);

我正确渲染了我的代码部分:

<a id="addmedia" href="#">
    <img alt="" src="images/bigbtn-add.png">
</a>

如何在h2前加上h2然后将这些元素包装在div中?

更新2:

感谢@ Mubo的帮助,我渲染了这个html:

<h2 class="hint">Medias</h2>
<a id="addmedia" href="#">
    <input id="media_img" type="image" src="/img/bigbtn-add.png" name="media_img">
</a>

现在我只需要在div中包含所有这些行。 装饰器现在看起来像这样:

$this->setElementDecorators(array(
    'ViewHelper',
    'HtmlTag', array('HtmlTag', array('tag' => 'a', 'id' => 'addmedia','href' => '#')),
    array('Description', array('tag' => 'h2', 'placement' => 'prepend')),
),
array('media_img')
);

缺少什么?

感谢您的帮助。

更新3:我仍然无法理解......

2 个答案:

答案 0 :(得分:0)

您可以使用setDescription并将其作为装饰器添加到此前面。

这非常棘手,并不简单。

     $myElement = new Zend_Form_Element_Text('name');
      $myElement->setLabel('Label');       
      $myElement->setRequired(true);
      $myElement->setDescription('Medias');        
      $myElement->setDecorators(   array(  'DijitElement', 'Errors',
                array(array('data' => 'HtmlTag'), array('tag' => 'td')),
                array('Label', array('tag' => 'td')),
                array('Description', array('tag' => 'h2', 'placement' => 'prepend')),
                array(array('row' => 'HtmlTag'), array('tag' => 'tr', 'class' => 'form_row'))
            ));
$this->addElement($myElement);

答案 1 :(得分:0)

哇,我终于找到了解决方案。这是我的装饰者:

   $media_img->setDecorators(array(
        'ViewHelper',
        'Errors',
        array('HtmlTag', array('tag' => 'a', 'id' => 'addmedia','href' => '#')),
        array('Description', array('tag' => 'h2', 'placement' => 'prepend')),
        array(
            array('fieldDiv' => 'HtmlTag'), 
            array(
                'tag' => 'div', 'class' => 'item', 'id' => 'medias'
            )
        )
    ));