0

我有一个这样声明的文本元素:

$name = $this->createElement('text', 'name');
$name->setLabel('imie:');

我想装饰这个元素,让它像这样呈现:

<div class="row">
  <span class="label">
    <label for="name" class="highlight">Name</label>
  </span>
  <span class="formw">
    <input type="text"  id="someid" name="name" class="textfield">
  </span>
</div>

我无法让它正常工作。有人可以帮我设置装饰器吗?

4

1 回答 1

0

使用 viewScript 装饰器:

部分@`views/scripts/_partial.phtml (命名为你想要的)

<form action="<?php echo $this->element->getAction() ?>"
      method="<?php echo $this->element->getMethod() ?>">
    <div class="row">
        <span class="label">
            <?php echo $this->element->name->renderLabel() //render the label for element ?>
        </span>
        <span class="formw">
            <?php echo $this->element->name->renderViewHelper() //render just the input of the element ?>
        </span>
        <?php echo $this->element->submit //render the whole submit element ?>
    </div>
</form>

在您的表单中设置装饰器:

class Application_Form_NewForm extends Zend_Form
{
    public function init() {
        $this->setMethod('POST');
        //set the viewscript decorator
        $this->setDecorators(array(
            array('ViewScript', array(
                    'viewScript' => '_partial.phtml'
            ))
        ));
    //more follows...

现在像往常一样渲染你的表单

您可能必须完全按照您想要的方式使用元素装饰器,但这应该可以让您接近目标。

希望这可以帮助...

于 2012-08-02T09:27:39.757 回答