Re: [請益] 請問有人有使用過smarty+pear[HTML_Qui …

看板PHP作者 (請勿忘記密碼)時間17年前 (2008/08/26 00:58), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/3 (看更多)
※ 引述《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
^^b
08/26 07:48, 2F

08/26 09:42, , 3F
非常感謝大大的說明!真的非常有用,簡單清楚^^
08/26 09:42, 3F
文章代碼(AID): #18ikIxF8 (PHP)
文章代碼(AID): #18ikIxF8 (PHP)