常用
theme 的找尋順序
if set $form['#theme'], Ex:“foo”
其他資源
Form API Reference, Form generation, FormAPI Doc, Examples,
表單 | form.inc | |
hook_element_info() | 讓模組可以自訂元素型態及指定預設值 | system.api.php |
hook_form_alter(&$form, &$form_state, $form_id) | 異動作業中的表單內容 僅自有模組內呼叫則函式名稱為 $form_Id + '_alter' |
system.api.php |
hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) | 異動特定 FormID 的表單資料 | |
hook_form_BASE_FORM_ID_alter(&$form, &$form_state, $form_id) | 異動 特定類型 的表單資料, drupal7 僅有 node_form, comment_form 兩種BaseID | |
hook_forms($form_id, $args) | ||
hook_form($node, &$form_state) | 顯示一個 node 的編輯表單 | node.api.php |
form_set_error($name = NULL, $message = '', $limit_validation_errors = NULL) | 表單輸入錯誤訊息顯示 | |
drupal_get_form($form_id) | 通常用於 無狀態傳遞 或 menu callback 的簡易表單, 指定的 $form_id 須存在該函式名稱, 系統藉由呼叫該函式來建立表單內容. Ex. hook_menu()的其中參數 'page callback' => 'drupal_get_form', 'page arguments' => array('formexample_nameform'), //$form_Id |
|
drupal_form_submit($form_id, &$form_state) | 由程式內觸發確認後程序 | |
drupal_build_form($form_id, &$form_state) | 建立與處理輸入表單 | |
element_children(&$elements, $sort = FALSE) | 取出傳入陣列資料(key/value)內所有非 # 開頭的 key | common.inc |
element_info($type) | 傳回元素的基本陣列資料(初始化) ex:element_info('managed_file'); |
|
form_set_value($element, $value, &$form_state) | form_set_value($form['name']['first'], 'joe', &$form_state); 等同 $form_state['values']['name']['first'] = 'joe'; |
|
系統 | system.module | |
system_settings_form($form) | 加入基本系統參數編輯設定與儲存按鈕 | |
$form_state | ||
$form_state['values'][element_Id] | 放置使用者表單輸入內容 | |
$form_state['redirect'] = 'node/1'; $form_state['redirect'] = array('node/1', $query_string, $named_anchor); |
頁面轉向, 若無指定則回到原頁面 | |
$form_state['rebuild'] = TRUE; | 讓 form 元素重新呈現時繼續保留當前輸入值 | |
$form 特定參數 | ||
$form['#validate'][] = 'my_validate'; | 若有指定參數則call參數內指定的 function, 若無則會 call $form_Id + 識別字 之函式, Ex: $form_Id + '_validate' , $form_Id + '_submit'' |
|
$form['#submit'][] = 'my_submit'; | ||
$form['#action'] = 'myAction'; | 指定submit後轉由 http://ex.com/myAction 來進行處理, 若無指定則由原程序進行表單處理 | |
$form['#theme'] = 'my_theme'; | 若無定義則會 call 'theme_' + $form_Id 之函式 | |
$form['#pre_render'] = 'xxx'; | 讓 form 在呈現前的最後前置處理相關內容 | |
$form[element] 內元素之參數 | ||
#attributes | 附加屬性資料 ‘#attributes’ => array(‘class’ => ‘search-form’); |
|
#required | 是否為必要輸入 | |
#access | 權限控制, '#access' => user_access('administer nodes'), | |
#default_value | 預設值 | |
'#element_validate' => 'my_ele_validate', | 指定元素的驗證作業 | |
'#markup' => '<blink>Hello!</blink>', | 當元素沒有指定 #type 參數時, 則以 #markup 內容直接呈現 | |
#ajax | 使用AJAX技術 '#ajax' => array( 'callback' => 'automobile_dependent', //處理的函式 'wrapper' => 'dropdown_replace', ), //要呈現資料的元素ID |
|
#attached | 附加檔案如,css, js等 | |
#prefix, #suffix | 元素呈現時 前/後 增加之內容(html code), 可藉此加入 table tag 進行表單元素位置的佈置 | |
'#tree' => TRUE | TRUE: 告訴系統 submit 後所屬元素值依照陣列結構存放在 $form_state['value'][], 反之則所有陣列值均放置在第一層, 此時須注意元素ID不能相同 | |
#array_parents | 當表單初始化完成後, 該陣列存放包含自己與各父層元素名稱. 與 #tree 無關 | |
#parents | 當表單初始化完成後, 當 #tree=true 時, 該陣列內會存放到最高層元素 #tree=true間, 所有歷經的元素名稱, 否之則陣列內僅存放自己名稱 | |
#state | 可利用其他元素值作為自身的狀態控制, 此法若對應的元素使用AJAX模式, #state控制可能會無效用 '#states' => array( 'visible' => array( ':input[name="how_many_pcs"]' => array('value' => '5'), ), ), |
|
#pre_render, #post_render | drupal_render() 發生前後呼叫指定的函式 | |
#autocomplete_path | 指定提示自動完成輸入的資料提供程序 |
theme 的找尋順序
if set $form['#theme'], Ex:“foo”
1. themes/mytheme/foo.tpl.php // Template file provided by theme.
2. formexample/foo.tpl.php // Template file provided by module.
3. mytheme_foo() // Function provided theme.
4. phptemplate_foo() // Theme function provided by theme engine.
5. theme_foo() // 'theme_' plus the value of $form['#theme'].
else Ex: formId='exForm'; 以 formid 進行找尋呼叫
2. formexample/foo.tpl.php // Template file provided by module.
3. mytheme_foo() // Function provided theme.
4. phptemplate_foo() // Theme function provided by theme engine.
5. theme_foo() // 'theme_' plus the value of $form['#theme'].
1. themes/mytheme/exForm.tpl.php // Template provided by theme.
2. formexample/exForm.tpl.php // Template file provided by module.
3. mytheme_exForm() // Theme function provided by theme.
4. phptemplate_exForm() // Theme function provided by theme engine.
5. theme_exForm() // 'theme_' plus the form ID.
2. formexample/exForm.tpl.php // Template file provided by module.
3. mytheme_exForm() // Theme function provided by theme.
4. phptemplate_exForm() // Theme function provided by theme engine.
5. theme_exForm() // 'theme_' plus the form ID.
其他資源
Form API Reference, Form generation, FormAPI Doc, Examples,