2
如果我有以下簡單的形式:使用Zend表單裝飾,使表體的票據
<?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會導致一種更符合我喜好的形式(因爲textarea在標籤下,而電子郵件輸入緊挨着標籤):
<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根本不呈現任何表格,將段落標記中的前兩個元素包裹起來,並添加兩行以確保適當的間距?
謝謝。看起來像這個裝飾器系統是非常複雜的,因爲HTML是如此簡單的工作。我想我將不得不經歷似乎是一個陡峭的學習曲線。 – Tom
@Tom如果你只創建一個或兩個確實如此的表單。如果您創建了大量元素甚至多頁表單的幾十個表單,那麼這將爲您節省大量時間。更不用說過濾器和驗證器 –