Re: [請益] 請問有人有使用過smarty+pear[HTML_Qui …
※ 引述《ihy08 (ihy08)》之銘言:
: 請問有人有使用過這種方式架站嗎?
: 如何讓HTML_QuickForm所寫出來的表單放到指定的smarty的樣板
: 之前都只用smarty
: 最近開始研究pear
: HTML_QuickForm功能滿多好用的!
: 又想結合smarty
: 可是遇到HTML_QuickForm所產生的值該怎麼在樣板上呈現?
: 有前輩可以提供方式或是範例嗎?
: 謝謝!^^
Smarty和HTML_QuickForm這兩項我剛好都滿常使用的,也經常組合使用。
HTML_QuickForm有提供搭配Smarty使用的renderer。大致上的用法會像這樣:
form.php:
<?php
$smarty = new Smarty();
$form =& new HTML_QuickForm("myform", "post", "form.php");
$form->addElement("text", "email", "Your email");
$form->addRule(.........);
if($form->validate()) {
// 表單資料驗證通過,儲存表單資料
....
// 輸出感謝頁畫面
$smarty->display("thanks.html");
exit;
}
// 沒有接收到正確的表單資料,輸出表單頁面
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty, TRUE);
$form->accept($renderer);
$smarty->assign("form", $renderer->toArray());
$smarty->display("form.html");
?>
form.html :
{$form.javascript}
<form {$form.attributes}>
{$form.hidden}
Email : {$form.email.html}
<input type="submit" />
</form>
如果你有使用MVC架構的話,建立表單以及儲存表單資料這兩個部份,
會放在model裡面,其他部份在controller裡面,Smarty本身當然就是
view的部份了。
組合使用Smarty和HTML_QuickForm的時候,其中一個最常遇到的問題
大概是要如何在樣板檔案裡面精確控制表單欄位的外觀。前面form.html
裡面的
{$form.email.html}
實際上會輸出類似
<input type="text" name="email" ...... />
你如果要精確控制這個表單欄位的外觀,一個方式是在建立表單欄位的時候
就給它加上一個id屬性,讓它輸出的HTML裡面包含id屬性,這樣你就可以
在HTML裡面透過CSS,藉由該元素的id來控制它的外觀。另一個方式是直接
在HTML裡面用一個<span>標籤去包圍這個表單欄位:
<span id="myemail">{$form.email.html}</span>
這樣可以在CSS裡面透過 #myemail input 這個selector去控制到這個表單
欄位的外觀。這個方式,寫樣板的人可以不用去管當初寫model的人在建立
表單的時候給了這個欄位什麼id,是個比較能夠各自獨立的作法。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.64.235
推
08/26 01:38, , 1F
08/26 01:38, 1F
推
08/26 07:48, , 2F
08/26 07:48, 2F
推
08/26 09:42, , 3F
08/26 09:42, 3F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章