问题描述
我想将Zend表单强制转换为Twitter Bootstrap样式.我目前正在遍历表单字段,并将表单信息写入到我的bootstrap div结构中.
I want to force the Zend form into Twitter Bootstrap style. I currently iterate through the form fields and write the form info into my bootstrap div construction.
我在Zend Framework 1(!)中看到,有一种在装饰器中执行此操作的方法.但是由于某些原因,版本2的文档没有涵盖这一点...
I saw in Zend Framework 1(!) that there is a way to do this within a decorator. But for some reason the doc for version 2 doesn't cover this point...
我想做这样的事情:
protected $_format = '<label for="%s">%s</label>'
. '<input id="%s" name="%s" type="text" value="%s"/>';
public function render($content)
{
$element = $this->getElement();
$name = htmlentities($element->getFullyQualifiedName());
$label = htmlentities($element->getLabel());
$id = htmlentities($element->getId());
$value = htmlentities($element->getValue());
$markup = sprintf($this->_format, $name, $label, $id, $name, $value);
return $markup;
}
有什么想法吗?
推荐答案
我现在正在使用partials
.我正在遍历属性,为例如CSRF
和Submit
建立一些例外...这很顺利:
I'm using partials
now. I'm iterating over the attributes, build a few exceptions for eg CSRF
and Submit
... This works pretty smooth:
查看
echo $this->partial('partial/form-partial', array(
'form' => $this->form,
'url' => $this->url('whatever', array('action' => 'add')))); ?>
部分
<?php
$form = $this->form;
$form->setAttribute ( 'action', $this->url () );
$form->prepare ();
echo $this->form ()->openTag ( $form );
foreach ( $form as $element ) :
?>
<div
class="control-group <?php if($this->formElementErrors($element)) echo "error" ?>">
<label class="control-label"><?php echo $element->getLabel() ?></label>
<div class="controls">
<?php echo $this->formElement ( $element );
if ($this->formElementErrors ( $element ))
?>
<span class="help-inline"><?php echo $this->formElementErrors($element) ?></span>
</div>
</div>
<?php
endforeach;
echo $this->form ()->closeTag ( $form );
?>
为清楚起见,省略了例外...
The exceptions are left out for clearity's sake...
这篇关于Zend Framework 2-表单元素装饰器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!