Calendar(日历)使用说明

DoitPHP扩展类Calendar(日历),用于输出日历(数组),并支持标记功能。

类方法使用说明

1、setYear($year)

|设置日历的年份。 默认为当前的年份
|参数说明:
|$year : 所要设置的年份

2、setMonth($month)

|设置月份。 默认为当前月份
|参数说明:
|$month : 所要设置的月份

3、setUsedDays($days)

|设置已占用的日期
|参数说明:
|$days : 已占用的日期。注:本参数为数组

4、render()

|输出日历数组
|参数说明:
|参数为空

使用举例

例一、

Controller文件代码内容如下:

  1. public function indexAction() {
  2.  
  3. $calendarObj = $this->instance('Calendar');
  4.  
  5. $data = $calendarObj->render();
  6.  
  7. $this->assign('tab', $data);
  8.  
  9. $this->display();
  10. }

视图文件内容如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>实例:日历</title>
  6. </head>
  7.  
  8. <body>
  9. <table border="0" cellspacing="1" cellpadding="0" style="border:1px solid #eee;">
  10. <tr>
  11. <td height="30" colspan="7" align="center">
  12. <?php echo $tab['year']; ?><?php echo $tab['month']; ?>
  13. </td>
  14. </tr>
  15. <tr>
  16. <td width="30" height="30" align="center" bgcolor="#EEE"></td>
  17. <td width="30" align="center" bgcolor="#EEE"></td>
  18. <td width="30" align="center" bgcolor="#EEE"></td>
  19. <td width="30" align="center" bgcolor="#EEE"></td>
  20. <td width="30" align="center" bgcolor="#EEE"></td>
  21. <td width="30" align="center" bgcolor="#EEE"></td>
  22. <td width="30" align="center" bgcolor="#EEE"></td>
  23. </tr>
  24. <?php foreach($tab['list'] as $rows){ ?>
  25. <tr>
  26. <?php foreach($rows as $key => $value){ ?>
  27. <td<?php if($key==0){ echo ' height="30"'; } ?> align="center">
  28. <?php if($value['status']){echo $value['date'];} else {echo '&nbsp;';} ?>
  29. </td>
  30. <?php } ?>
  31. </tr>
  32. <?php } ?>
  33. </table>
  34. </body>
  35. </html>

运行结果:

Calendar(日历)使用说明 - 图1

例二、

将上面例一中Controller文件的代码,

  1. $data = $calendarObj->render();

更改为:

  1. $data = $calendarObj->setYear(2019)->setMonth(10)->render();

其它代码不变,调试运行下。看结果如何? 如果查看下$data的数组结构,就知道数组结构如下:

  1. Array
  2. (
  3. [year] => 2019
  4. [month] => 10
  5. [list] => Array
  6. (
  7. [0] => Array
  8. (
  9. [0] => Array
  10. (
  11. [date] =>
  12. [status] =>
  13. )
  14.  
  15. [1] => Array
  16. (
  17. [date] =>
  18. [status] =>
  19. )
  20.  
  21. [2] => Array
  22. (
  23. [date] => 1
  24. [status] => 1
  25. )
  26.  
  27. [3] => Array
  28. (
  29. [date] => 2
  30. [status] => 1
  31. )
  32.  
  33. [4] => Array
  34. (
  35. [date] => 3
  36. [status] => 1
  37. )
  38.  
  39. [5] => Array
  40. (
  41. [date] => 4
  42. [status] => 1
  43. )
  44.  
  45. [6] => Array
  46. (
  47. [date] => 5
  48. [status] => 1
  49. )
  50.  
  51. )
  52.  
  53. [1] => Array
  54. (
  55. [0] => Array
  56. (
  57. [date] => 6
  58. [status] => 1
  59. )
  60.  
  61. [1] => Array
  62. (
  63. [date] => 7
  64. [status] => 1
  65. )
  66.  
  67. [2] => Array
  68. (
  69. [date] => 8
  70. [status] => 1
  71. )
  72.  
  73. [3] => Array
  74. (
  75. [date] => 9
  76. [status] => 1
  77. )
  78.  
  79. [4] => Array
  80. (
  81. [date] => 10
  82. [status] => 1
  83. )
  84.  
  85. [5] => Array
  86. (
  87. [date] => 11
  88. [status] => 1
  89. )
  90.  
  91. [6] => Array
  92. (
  93. [date] => 12
  94. [status] => 1
  95. )
  96.  
  97. )
  98.  
  99. [2] => Array
  100. (
  101. [0] => Array
  102. (
  103. [date] => 13
  104. [status] => 1
  105. )
  106.  
  107. [1] => Array
  108. (
  109. [date] => 14
  110. [status] => 1
  111. )
  112.  
  113. [2] => Array
  114. (
  115. [date] => 15
  116. [status] => 1
  117. )
  118.  
  119. [3] => Array
  120. (
  121. [date] => 16
  122. [status] => 1
  123. )
  124.  
  125. [4] => Array
  126. (
  127. [date] => 17
  128. [status] => 1
  129. )
  130.  
  131. [5] => Array
  132. (
  133. [date] => 18
  134. [status] => 1
  135. )
  136.  
  137. [6] => Array
  138. (
  139. [date] => 19
  140. [status] => 1
  141. )
  142.  
  143. )
  144.  
  145. [3] => Array
  146. (
  147. [0] => Array
  148. (
  149. [date] => 20
  150. [status] => 1
  151. )
  152.  
  153. [1] => Array
  154. (
  155. [date] => 21
  156. [status] => 1
  157. )
  158.  
  159. [2] => Array
  160. (
  161. [date] => 22
  162. [status] => 1
  163. )
  164.  
  165. [3] => Array
  166. (
  167. [date] => 23
  168. [status] => 1
  169. )
  170.  
  171. [4] => Array
  172. (
  173. [date] => 24
  174. [status] => 1
  175. )
  176.  
  177. [5] => Array
  178. (
  179. [date] => 25
  180. [status] => 1
  181. )
  182.  
  183. [6] => Array
  184. (
  185. [date] => 26
  186. [status] => 1
  187. )
  188.  
  189. )
  190.  
  191. [4] => Array
  192. (
  193. [0] => Array
  194. (
  195. [date] => 27
  196. [status] => 1
  197. )
  198.  
  199. [1] => Array
  200. (
  201. [date] => 28
  202. [status] => 1
  203. )
  204.  
  205. [2] => Array
  206. (
  207. [date] => 29
  208. [status] => 1
  209. )
  210.  
  211. [3] => Array
  212. (
  213. [date] => 30
  214. [status] => 1
  215. )
  216.  
  217. [4] => Array
  218. (
  219. [date] => 31
  220. [status] => 1
  221. )
  222.  
  223. [5] => Array
  224. (
  225. [date] =>
  226. [status] =>
  227. )
  228.  
  229. [6] => Array
  230. (
  231. [date] =>
  232. [status] =>
  233. )
  234.  
  235. )
  236.  
  237. )
  238.  
  239. )

注:对上面数组中list字段中的status为当前日期的状态。true(或1)时,为当前日期可以显示,today为当前日期就是今天,used则为当前日期已占用。list数据为多维数组。其中1,2, 3, 4为行数据(相当于表格标签中的tr)。每个行数据中包含7个元素(数组),这7个元素相当于表格标签中的td。7个元素也就是7天(从星期天开始起,至星期六)。

原文: http://www.doitphp.com/index/documentation/?articleid=55