我有一些表现形式。这是我的代码:
private function _createForm($action) {
$form = new Zend_Form();
$form->setName($action . '_form');
$form->setMethod('post');
// Main tab
$title = $form->createElement('text', 'title');
$title->setLabel('Title')
->setAttrib('maxlength',50)->setAttrib('id', 'title')->setAttrib('class', $action . '_title')
->setAttrib('style','height: 15px; width: 200px;')
->setRequired(true)
->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
$description = $form->createElement('textarea', 'description');
$description->setLabel('Description')
->setAttrib('style','height: 50px; width: 200px;')->setAttrib('id', 'description')->setAttrib('class', $action . '_description')
->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
// Advanced tab
$qualif_time = $form->createElement('text', 'qualif_time');
$qualif_time->setLabel('Qualification Time')
->setAttrib('maxlength',11)->setAttrib('id', 'qualif_time')->setAttrib('class', $action . '_qualif_time')->setAttrib('style','height: 15px; width: 200px;')
->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
$total_assoc_down = $form->createElement('text', 'total_assoc_down');
$total_assoc_down->setLabel('Total Associates Downline')
->setAttrib('maxlength',11)->setAttrib('id', 'total_assoc_down')->setAttrib('class', $action . '_total_assoc_down')->setAttrib('style','height: 15px; width: 200px;')
->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
$submit = $form->createElement('submit', $action);
$submit->setAttrib('id', 'submit')->setAttrib('value', $action)
->setDecorators(array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
));
$form->addElements(array(
$title, $description, $qualif_time, $total_assoc_down
));
$form->addDisplayGroup(array('qualif_time', 'total_assoc_down'), 'advanced_tab');
$advanced_tab = $form->getDisplayGroup('advanced_tab');
$form->addElements(array($advanced_tab, $submit));
$form->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'table')),
'Form',
));
return $form;
}
我的任务是将$ title和description放在一个div中,并将$ total_assoc和$ qualif_time放在其他div中。我应该在这个div之前插入href(link)。我试图用addDisplayGroup()来做,但它创建了一个字段集。我需要div。
THX。
答案 0 :(得分:1)
尝试使用表单装饰器。 *
要设置表单docorator,您必须向表单对象添加类似这样的内容
$decoratorFile = "path to decoration phtml for example user/" path starts automatic from views/scripts
$paramsArr = array('viewScript' => $decoratorFile);
$decorator = new Zend_Form_Decorator_ViewScript($paramsArr);
$this->setDecorators(array($decorator)); // $this is a your form object
现在你必须为所有表单元素准备一个phtml:
<form class="formU" enctype="application/x-www-form-urlencoded"
action="<?= $this->element->getAction() ?>"
method="<?= $this->element->getMethod() ?>"
name="<?= $this->element->getName() ?>"
id="<?= $this->element->getId() ?>">
<?php
// all field in foreach
$formElements = $this->element->getElements();
foreach ($formElements as $formElement) {
echo $formElement;
}
// or you can use something like this for each field
$this->element->getElement('elementName')
?>
</form>
如果这对你来说还不够。你必须为每个领域使用decoradors:
http://framework.zend.com/manual/en/zend.form.decorators.html
现场装饰工作同样如此。