2010-07-29 78 views
0

我已經創建自定義窗體使用FAPI爲我的網站。而且我根據設計師提供的模板將每個控件放置在特定位置。例如 -封閉自定義窗體元素與窗體標籤(drupal 6.x)

<div id="myform"> 
    <span>Enter Your Name : </span> <?php print drupal_render($form['name']); ?> 
    <span>Gender : </span><?php print drupal_render($form['gender_radio']); ?> 
    .... 
</div> 
<?php print drupal_render($form['submit']); ?> 

這是我的問題 - 我如何將所有元素包含在表單標籤內?硬編碼模板文件中的表單標籤是否正確地在drupal中執行?或者在hook_form中創建更好?但是這樣做需要我手動添加結束標籤。任何建議將不勝感激。
Drupal的 - 6.x的

回答

1

聽起來也許你閱讀building individual fields,但跳過FAPI的一些basic concepts。簡而言之,如果您使用drupal_get_form()調用表單,則會自動獲得表單容器(以及許多使用FAPI的好處,例如令牌,驗證等)。要處理表單元素周圍的標記,可以使用#prefix,#suffixmarkup元素。

你可以像從前一樣從外部組裝整個表單,但是很少有這樣的情況真的值得。如果你真的想這樣做,你基本上想要複製drupal_get_form()所做的事情,以便以與FAPI協同工作的方式添加表單包裝器。

+0

我按照您的建議使其工作。謝謝一堆。但還有一個問題。當我爲我的網站使用模板(與主題函數相反)時,我在模板預處理函數中添加了drupal_get_form調用。它的確有用。但我想知道這是否是drupal的建議。 Cuz,通常,這個函數調用位於主題函數內部,用於那些使用模板的人,而我正在使用模板,並且不確定內部預處理器是否是drupal建議的內容。也感謝鏈接。我只是從drupal主題指南和drupal站點閱讀了關於表單的信息,當時我並沒有想到 – Andrew 2010-07-30 21:24:30

+0

很難說你的drupal_get_form調用應該在哪裏,而不知道你在做什麼。一般來說,複雜的邏輯應該不在模板文件中,所以預處理函數會更好。但取決於你在做什麼,在模塊中而不是主題中做FAPI的東西可能更有意義。 – 2010-08-02 22:26:00