【发布时间】:2011-10-11 14:51:59
【问题描述】:
如果我有以下简单的形式:
<?php
class Application_Form_Contact extends Zend_Form
{
public function init()
{
//set the method for the display form to POST
$this->setMethod('post');
//create and add e-mail element
$email = $this -> createElement('text', 'username')
-> setLabel('E-mail:')
-> setRequired(true)
-> addFilters(array('StringTrim', 'StringToLower'))
-> addValidator('EmailAddress')
-> addErrorMessage('U dient een geldig e-mail adres in te vullen.');
$this->addElement($email);
//create and add message element
$message = $this -> createElement('textarea', 'message')
-> setLabel('Bericht:')
-> setRequired(true)
-> addValidator('StringLength', array(0, 5000))
-> addErrorMessage('U dient een bericht in te vullen van maximaal 5000 tekens.');
$this->addElement($message);
//submit button
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Verstuur Bericht'
));
}
}
?>
默认情况下,这将导致表格布局如下:
<form enctype="application/x-www-form-urlencoded" method="post" action="/contact"><dl class="zend_form">
<dt id="username-label"><label for="username" class="required">E-mail:</label></dt>
<dd id="username-element">
<input type="text" name="username" id="username" value=""></dd>
<dt id="message-label"><label for="message" class="required">Bericht:</label></dt>
<dd id="message-element">
<textarea name="message" id="message" rows="24" cols="80"></textarea></dd>
<dt id="submit-label"> </dt><dd id="submit-element">
<input type="submit" name="submit" id="submit" value="Verstuur Bericht"></dd>
</dl></form>
这是完全没有必要的,因为一些简单的 HTML 会产生更符合我喜好的表单(因为文本区域在标签下方,而电子邮件输入在标签旁边):
<form enctype="application/x-www-form-urlencoded" method="post" action="/contact">
<p>
<label id="username-label" for="username" class="required">E-mail:</label>
<input type="text" name="username" id="username" value="" />
</p>
<br />
<p>
<label id="message-label" for="message" class="required">Bericht:</label>
<br />
<textarea name="message" id="message" rows="24" cols="80"></textarea>
</p>
<input type="submit" name="submit" id="submit" value="Verstuur Bericht" />
</form>
看起来像这样:http://jsfiddle.net/qmKYa/ 而不是 http://jsfiddle.net/rudhA/2/。
但是我如何让 zend 根本不渲染任何表格,将前两个元素包装在段落标签中并添加两个新行以获得适当的间距?
【问题讨论】:
标签: php forms zend-framework decorator