我有一个以这种方式声明的文本元素:
$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>
我无法让它正常工作。 有人可以帮我设置装饰器吗?
答案 0 :(得分:0)
使用viewScript装饰器:
partial @`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...
现在只需像往常一样渲染表单
您可能必须使用元素装饰器来完全符合您的要求,但这应该让您接近目标。
希望这会有所帮助......