我创建了一个包含几个字段的Zend_From。我想做的是将它们放在段落中,以便它们自然流动。例如
Danny had [select with 1-10] apples and James had [select with 3-20] pears.
我一直试图用
做到这一点$elem= $this->registerForm->getElement('danny');
但是在输出中,此元素的值不再包含在表单中。我还认为可以使用Zend_Form_SubForm()
完成此操作,但找不到任何示例。
答案 0 :(得分:3)
你不需要一个子表单,只需要一个带有一些特殊装饰器的常规表单,或者删除一些装饰器。
<?php
class Your_Form_Example extends Zend_Form
{
public function init() {
// wrap the select tag in a <span> tag, hide label, errors, and description
$selectDecorators = array(
'ViewHelper',
array('HtmlTag', array('tag' => 'span'))
);
$this->addElement('select', 'danny', array(
'required' => true,
'multiOptions' => array('opt1', 'opt2'),
'decorators' => $selectDecorators // use the reduced decorators given above
));
}
}
然后这是呈现表单的视图脚本......
<form method="<?php echo $form->getMethod() ?>" action="<?php echo $form->getAction() ?>">
<p>Danny had <?php echo $form->danny ?> apples and James had <?php echo $form->james ?> pears.</p>
<p>More stuff here...</p>
<?php echo $form->submit ?>
</form>
这应该会产生类似
的内容<p>Danny had <span><select name="danny" id="danny"><option>opt1</option><option>opt2</option></select></span> apples and James had .....</p>
为了保持表单输出不错,错误,描述和标签装饰器将被删除,不会被渲染。因此,当您检查表单上的错误时,如果select元素有错误,则需要在表单上或其他位置显示它们,因为它们不会与select元素一起呈现。
希望有所帮助。
答案 1 :(得分:0)
您甚至可以使用单个字段。从控制器发送到视图的form
变量是一个对象数组。您可以使用->
运算符获取单个字段。例如,您可以使用
danny had <?php echo $this->form->danny; ?>apples and james had <?php echo $this->form->james; ?>.......
注意$this->form->danny
和$this->form->james
是放在zend form