Etable/form:修訂版本之間的差異

出自六年制學程
跳轉到: 導覽搜尋
(二)addElements($i,$value)
(三)colValue($j,$value,$row)
第 58 行: 第 58 行:
 
formType中只有特定表現沒有專用表單元素:
 
formType中只有特定表現沒有專用表單元素:
 
#'長欄名'=>array('function',函式名),請參考[[Etable/開發#以函式決定欄值的表現|範例]]
 
#'長欄名'=>array('function',函式名),請參考[[Etable/開發#以函式決定欄值的表現|範例]]
 +
#'長欄名'=>array('wrap'),$value中的半形分號「;」代換為換行<br/>
  
 
===插入層次===
 
===插入層次===

2019年9月22日 (日) 17:59的修訂版本

三階段流程說明

(一)form_edit與form_ins

form_edit($row=array())form_ins()
new XoopsThemeForm 得到 form 物件
每欄處理一輪:
剔除演算式且沒有表代名之欄
留下允許編或允計插之欄

hidden/both或hidden/edit
用隱藏欄送出('f[表名][欄名]',$h($i,$row[$i]))

hidden/both或hidden/ins或hidden/ins_only
用隱藏欄送出
1)('f[表名][欄名]',$h($i,欄位預設值))
2)('f[表名][欄名]',$h($i,null))

unix_time/both或unix_time/edit
用隱藏欄送出('f[表名][欄名]',mktime())

unix_time/both或unix_time/ins或unix_time/ins_only
用隱藏欄送出('f[表名][欄名]',mktime())

其他可編之欄,以addElements($i,$row[$i])處理

其他可插之欄,以:
1)addElements($i,欄位預設值)處理
2)addElements($i,null)處理

不可編之欄送出addElement(new XoopsFormLabel(欄代名,$row[$i]),0)

不可插之欄送出addElement(new XoopsFormLabel(欄代名,DONTINSERT),0)

(二)addElements($i,$value)

  • 處理會員欄,「$value=$xoopsUser->getVar('uname');」是以 xoops 為外套時期使用,應移除
  • 處理formType中各欄,除hidden、wrap以外諸欄
    1. unix_time:出時分秒小日曆
    2. date:出日期小日曆
    3. time:用 XoopsFormTime
    4. datetime:用 XoopsFormDateTime
    5. select:用 XoopsFormSelect 及其中的 addOptionArray(選項陣列)
    6. searchSelect:用 XoopsFormSelect 及其中的 addOptionArray(選項陣列)
    7. select2:用 XoopsFormSelect 及其中的 setExtra(" onChange='createOpt…'",false)、addOptionArray(選項陣列)
    8. radio:用 XoopsFormRadio 及其中的 addOptionArray(選項陣列)
    9. checkbox:用 XoopsFormCheckBox(欄代名,'f[表代名][欄名]',核取陣列或null) 及其中的 addOptionArray(選項陣列)
    10. radioyn:用 XoopsFormRadioYN
    11. auto:用 XoopsFormTextArea
    12. 其他(如 function):用 XoopsFormText
  • 處理不在formType中的各欄,依coltype產生表單元素
    1. blob/binary:XoopsFormLabel(表代名,BIDNT)
    2. blob/非binary:XoopsFormTextArea
    3. 其他:XoopsFormText

(三)colValue($j,$value,$row)

formType中只有特定表現沒有專用表單元素:

  1. '長欄名'=>array('function',函式名),請參考範例
  2. '長欄名'=>array('wrap'),$value中的半形分號「;」代換為換行<br/>

插入層次

$表單=new XoopsThemeForm(抬頭,表單名,$_SERVER['PHP_SELF']);

  • $選單元素=new XoopsFormSelect(抬頭,元素名,後送預設值,選項數,是否複選,id,是否span); // 前二引數必填
    1. $選單元素->addOptionArray($選項陣列); // 將選項放上選單元素
    2. $選項陣列中的諸陣列元素的索引為後送值,諸陣列元素的值為提示。
  • $表單->addElement($選單元素,是否必填); // 之後才將$選單元素放入表單
  • $表單->display(); // 印出表單

前後呼應

etable.php 中

/// 表單區
function addElements
…new XoopsFormTime(欄代名,'f[欄名]',15,欄值);
…form->addElement(上面生成的物件);

前面

// 主函式
function main
// 單筆資料前置處理,含插畢、刪一筆、編一筆
if(is_array($value)){
	if(isset($value['hour']) && isset($value['min'])){$value=$value['hour'].':'.$value['min'].':00';}
}
以上段落出現兩次