本文實例分析了ThinkPHP中html:list標簽用法。分享給大家供大家參考,具體如下:
復制代碼 代碼如下:<html:list id="checkList" name="user" checkbox="true" action="true" datasource="list" show="id:編號|8%,title:標題:edit,content:內容,create_time|toDate='Y-m-d H#i#s':添加時間,status|getStatus:狀態" actionlist="forbid|resume:禁用|恢復,edit:編輯" />
ThinkPHP的html標簽庫中的list標簽功能強大,但沒有文檔.只好看源碼了.馬馬虎虎看了下,大概如下:
datasource和show必須要,datasource是數據源名稱,也就是assign所指向的變量,show是最復雜的,等會再講
pk是主鍵名,默認為id;style是css樣式的class,因為整個list標簽會被編譯成table,比如這裡為mylist,那麼樣式表中的table.mylist樣式就會用在這;checkbox是否顯示復選框;action是否顯示操作列
show部分:用逗號分隔不同的字段,如:
id:編號|8%,account:用戶名|90px:edit:賬號,phone:地址,remark:備注,status|getStatus:狀態
每字段中,以冒號為分隔符,可以分為幾部分,每部分中可以再以|分隔,
第一部分:id,表示為結果集中的id字段,status|getStatus,表示status字段,但是要經過getStatus函數處理,這兒的函數可以是php自帶函數,也可以是thinkphp的common/functions.php中的函數,也可以是項目目錄conf/common.php中的自定義函數
第二部分:編號|8%表示標題行中顯示字段為標題,寬度為8%,用戶名|90px中的90px也是寬度
第三部分:如edit,表示javascript的edit函數,其參數為主鍵值,如id為1的用戶,用戶名(account)處的顯示值為一個鏈接,點擊後會執行javascript:edit(1);
第四部分:這部分一般不用設置,如賬號,表示account(用戶名)標題行中的"用戶名"鼠標移到上面後會顯示"按賬號排序",而如果不設置的話,是"按用戶名排序",也就是說不設置的話"按"和"排序"中間的幾個字是標題顯示一樣的.
再說actionlist,如果設置了action="true",但是沒有設置actionlist的話,就會顯示默認的"編輯"和"刪除"操作,參數都是主鍵的值.以我們自設的函數來講,比如設為changePassword:修改密碼,這兒就會變成類似復制代碼 代碼如下:<a href="javascript:changePassword('1')>修改密碼</a>
如果有|,就有些特殊了,目前的html標簽庫強制把這種情況解釋為status對應的操作,也就是說,datasource中必須有一個status字段,這個字段flase,那麼顯示|前的部分,否則為後部分,具體說:forbid|resume:禁用|恢復,如status為0,則<a href="javascript:forbid('1');>禁用</a>,否則為<a href="javascript:resume('1');>恢復</a>
總的來說,html:list功能很不錯,特別是其中可以自定每列寬度很好.但是還存在一些不足之處或一些開發者需要注意的地方:
1. actionlist中如有|,就與datasource中的status字段掛勾,這個很不爽.因為一來狀態可能不止兩種,二來其他的字段可能也需要根據情況顯示不同的文字執行不同的操作.
2. 鏈接用javascript表示,有時還行,但有時更希望直接用url表示,比如<a href="user/edit/id/1">編輯</a>
3. 鏈接中的javascript函數命名和某些html元素命名很簡單,有可能會與某些js腳本或html元素命名沖突,函數名如del,change,edit,over,out等,html元素如checkbox的id為check
4. 標題的按XX排序的功能不能禁用.有很多時候並不需要這種功能,特別是不需要每行都有這種功能.當然,可以在js函數中修改.
5. 上述的js函數都不是在標簽中定義,而只是調用.函數定義在自己的js腳本中,我是直接用的thinkphp的RABC的示例,所以也沒研究具體的js文件,暫時也不想研究了.不過大家如果增加了自定義的操作,那就得自己寫出js函數喲
TP的標簽庫是個好東西。
例如,一個包含復選框的標簽列表可以這樣寫:
復制代碼 代碼如下:<html:list id="list" name="user" datasource="info" show="id:ID,username:用戶名,value:用戶身份,fullname:真實姓名,sex:性別,tel:聯系電話,class:班級,home:宿捨" checkbox="true" action="true" actionlist="edit:編輯,delarticle:刪除,sh:審核"/>
id和name就不多說了
datasource是PHP代碼傳過來的內容信息
show:""裡面是表格的列信息
id:ID代表datasource裡,字段名為id的信息,顯示在列名為ID的列下。
如果是
articleTitle:文章標題:function
代表的意思是字段為articleTitle下的內容顯示在"文章標題"這個列下,同時,為每個“文章標題”添加了一個javascript:function("主鍵")的鏈接,用於其他操作
checkbox="true"代表顯示復選框
代表使用list的風格。
action="true"代表顯示操作列
actionlist="edit:編輯,delarticle:刪除,sh:審核"代表操作列的內容
格式:
執行函數:顯示名稱。
希望本文所述對大家基於thinkPHP框架的PHP程序設計有所幫助。