我的代码如下:
$this->setElementDecorators(array(
array('ViewHelper'),
array('Errors', array('tag' => 'div', 'class' => 'error')),
array('Label', array('tag' => 'span')),
array('HtmlTag', array('tag' => 'div'))
));
它给了我:
<div>
<div id="email-label"><label for="email" class="required">First name:</label></div>
<input type="text" name="email" id="email" value="" />
</div>
<div>
<div id="email-label"><label for="email" class="required">Last name:</label></div>
<input type="text" name="email" id="email" value="" />
</div>
但我希望将所有内容都放在具有指定类的 div 中,如下所示:
<div class="item">
<div class="label"><label for="email" class="required">First name:</label></div>
<div class="element"><input type="text" name="email" id="email" value="" /></div>
</div>
<div class="item">
<div class="label"><label for="email" class="required">Last name:</label></div>
<div class="element"><input type="text" name="email" id="email" value="" /></div>
</div>
我该怎么做?我阅读了手册,但我没有更多的想法:(
最佳答案
尝试:
$this->setElementDecorators(array(
array('ViewHelper'),
array('Errors', array('tag' => 'div', 'class' => 'error')),
array('Label', array('tag' => 'span')),
array('HtmlTag', array('tag' => 'div', 'class' => 'label')),
));
然后当您渲染表单时,手动渲染它,如下所示:
<div class="form">
<form method="<?php echo $this->form->getMethod() ?>"
action="<?php echo $this->form->getAction() ?>">
<div class="item">
<?php echo $this->form->firstName ?></div>
</div>
<div class="item">
<?php echo $this->form->lastName ?></div>
</div>
// the rest of your elements...
<?php echo $this->form->submit ?>
</form>
</div>
在 View 中输出各个表单元素可以让您更好地控制表单的输出,并可以更好地控制元素出现的位置以及它们所包含的 HTML。
如果可以的话,我会使用简短的 <?php echo $this->form ?>
但我的大多数表单都比较精美,我将自定义标记与元素装饰器结合使用,以使表单看起来完全符合我的要求。
另请参阅Using ViewScript Decorator on Nested Subforms (Zend Form)和 How To Remove All DtDdWrappers and Labels on Zend Form Elements .
关于php - 如何使用 Zend Form Decorator 将所有输入和标签放入 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801136/