?
This document uses PHP Chinese website manual Release
Calendar類可讓您動(dòng)態(tài)創(chuàng)建日歷。您的日歷可以通過(guò)使用日歷模板進(jìn)行格式化,從而可以100%控制其設(shè)計(jì)的各個(gè)方面。另外,您可以將數(shù)據(jù)傳遞到日歷單元格。
使用日歷類
初始化類
顯示日歷
將數(shù)據(jù)傳遞給您的日歷單元格
設(shè)置顯示首選項(xiàng)
顯示下一個(gè)/上一個(gè)月的鏈接
創(chuàng)建日歷模板
類參考
像CodeIgniter中的大多數(shù)其他類一樣,Calendar類在您的控制器中使用$ this-> load-> library函數(shù)進(jìn)行初始化:
$this->load->library('calendar');
加載后,Calendar對(duì)象將可用:
$this->calendar
以下是一個(gè)非常簡(jiǎn)單的例子,展示了如何顯示日歷:
$this->load->library('calendar');echo $this->calendar->generate();
以上代碼將根據(jù)您的服務(wù)器時(shí)間生成當(dāng)前月/年的日歷。要顯示特定月份和年份的日歷,您需要將此信息傳遞給日歷生成功能:
$this->load->library('calendar');echo $this->calendar->generate(2006, 6);
以上代碼將生成一個(gè)日歷,顯示2006年6月份。第一個(gè)參數(shù)指定年份,第二個(gè)參數(shù)指定月份。
要將數(shù)據(jù)添加到日歷單元格中,需要?jiǎng)?chuàng)建一個(gè)關(guān)聯(lián)數(shù)組,其中的鍵與您希望填充的日期相對(duì)應(yīng),并且數(shù)組值包含數(shù)據(jù)。該數(shù)組傳遞給日歷生成函數(shù)的第三個(gè)參數(shù)。考慮這個(gè)例子:
$this->load->library('calendar'); $data = array(3 => 'http://example.com/news/article/2006/06/03/', 7 => 'http://example.com/news/article/2006/06/07/', 13 => 'http://example.com/news/article/2006/06/13/', 26 => 'http://example.com/news/article/2006/06/26/'); echo $this->calendar->generate(2006, 6, $data);
使用上述示例,第3,7,13和26天將成為指向您提供的網(wǎng)址的鏈接。
注意
默認(rèn)情況下,它假定你的數(shù)組將包含鏈接。在下面解釋日歷模板的部分中,您將了解如何自定義如何處理傳遞到單元格的數(shù)據(jù),以便傳遞不同類型的信息。
您可以設(shè)置七種偏好來(lái)控制日歷的各個(gè)方面。首選項(xiàng)是通過(guò)在加載函數(shù)的第二個(gè)參數(shù)中傳遞首選項(xiàng)數(shù)組來(lái)設(shè)置的。這里是一個(gè)例子:
$prefs = array( 'start_day' => 'saturday', 'month_type' => 'long', 'day_type' => 'short'); $this->load->library('calendar', $prefs); echo $this->calendar->generate();
上面的代碼將在星期六開(kāi)始日歷,使用“長(zhǎng)”月標(biāo)題和“短”日名稱。有關(guān)以下偏好的更多信息。
偏愛(ài) | 默認(rèn) | 選項(xiàng) | 描述 |
---|---|---|---|
模板 | 沒(méi)有 | 沒(méi)有 | 包含您的日歷模板的字符串或數(shù)組。請(qǐng)參閱下面的模板部分。 |
當(dāng)?shù)貢r(shí)間 | 時(shí)間() | 沒(méi)有 | 一個(gè)對(duì)應(yīng)于當(dāng)前時(shí)間的Unix時(shí)間戳。 |
START_DAY | 星期日 | 任何一周(星期日,星期一,星期二等) | 設(shè)置日歷開(kāi)始的星期幾。 |
month_type | long | 長(zhǎng)短 | 確定標(biāo)題中使用的月份名稱的版本。long = 1月,short = 1月。 |
day_type | 四月 | 長(zhǎng),短,abr | 確定要在列標(biāo)題中使用的星期幾名稱的版本。long =星期日,short = Sun,abr = Su。 |
show_next_prev | 假 | TRUE / FALSE(布爾) | 確定是否顯示允許切換到下一個(gè)/前幾個(gè)月的鏈接。請(qǐng)參閱下面有關(guān)此功能的信息。 |
next_prev_url | 控制器/方法 | 一個(gè)URL | 設(shè)置下一個(gè)/上一個(gè)日歷鏈接中使用的基本路徑。 |
show_other_days | 假 | TRUE / FALSE(布爾) | 確定是否顯示共享日歷月的第一個(gè)或最后一個(gè)星期的其他月份的日期。 |
要讓您的日歷通過(guò)下一個(gè)/上一個(gè)鏈接動(dòng)態(tài)增加/減少,需要設(shè)置類似于此示例的日歷代碼:
$prefs = array('show_next_prev' => TRUE, 'next_prev_url' => 'http://example.com/index.php/calendar/show/'); $this->load->library('calendar', $prefs); echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));
你會(huì)注意到關(guān)于上述例子的一些事情:
您必須將“show_next_prev”設(shè)置為T(mén)RUE。
您必須在“next_prev_url”首選項(xiàng)中將該URL提供給包含日歷的控制器。如果你不這樣做,它將被設(shè)置為當(dāng)前的控制器/方法。
您必須通過(guò)它們出現(xiàn)的URI段向日歷生成功能提供“年”和“月”(注意:日歷類會(huì)自動(dòng)將年/月添加到您提供的基本URL中)。
通過(guò)創(chuàng)建日歷模板,您可以100%控制日歷的設(shè)計(jì)。使用字符串方法,日歷的每個(gè)組件都將被放置在一對(duì)偽變量中,如下所示:
$prefs['template'] = '{table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open} {heading_row_start}<tr>{/heading_row_start} {heading_previous_cell}<th><a href="{previous_url}"><<</a></th>{/heading_previous_cell} {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell} {heading_next_cell}<th><a href="{next_url}">>></a></th>{/heading_next_cell} {heading_row_end}</tr>{/heading_row_end} {week_row_start}<tr>{/week_row_start} {week_day_cell}<td>{week_day}</td>{/week_day_cell} {week_row_end}</tr>{/week_row_end} {cal_row_start}<tr>{/cal_row_start} {cal_cell_start}<td>{/cal_cell_start} {cal_cell_start_today}<td>{/cal_cell_start_today} {cal_cell_start_other}<td class="other-month">{/cal_cell_start_other} {cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content} {cal_cell_content_today}<div class="highlight"><a href="{content}">{day}</a></div>{/cal_cell_content_today} {cal_cell_no_content}{day}{/cal_cell_no_content} {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today} {cal_cell_blank} {/cal_cell_blank} {cal_cell_other}{day}{/cal_cel_other} {cal_cell_end}</td>{/cal_cell_end} {cal_cell_end_today}</td>{/cal_cell_end_today} {cal_cell_end_other}</td>{/cal_cell_end_other} {cal_row_end}</tr>{/cal_row_end} {table_close}</table>{/table_close}';$this->load->library('calendar', $prefs);echo $this->calendar->generate();
使用數(shù)組方法,您將傳遞key => value
對(duì)。您可以傳遞盡可能多或更少的值。省略的鍵將使用日歷類中繼承的默認(rèn)值。
例:
$prefs['template'] = array( 'table_open' => '<table class="calendar">', 'cal_cell_start'=> '<td class="day">', 'cal_cell_start_today' => '<td class="today">'); $this->load->library('calendar', $prefs); echo $this->calendar->generate();
class CI_Calendarinitialize([$config = array()])
參數(shù): | $ config(array) - 配置參數(shù) |
---|---|
返回: | CI_Calendar實(shí)例(方法鏈接) |
返回類型: | CI_Calendar |
$ config(array) - 配置參數(shù)
返回:CI \ _Calendar實(shí)例(方法鏈接)
返回類型:CI \ _Calendar
初始化日歷首選項(xiàng)。接受一個(gè)關(guān)聯(lián)數(shù)組作為輸入,包含顯示首選項(xiàng)。
generate([$year = ''[, $month = ''[, $data = array()]]])
參數(shù): | $ year(int) - Year $ month(int) - Month $ data(array) - 要在日歷單元格中顯示的數(shù)據(jù) |
---|---|
返回: | HTML格式的日歷 |
返回類型: | 串 |
$ year(int) - 年份
$ month(int) - Month
$ data(array) - 要在日歷單元格中顯示的數(shù)據(jù)
返回:HTML格式的日歷
返回類型:字符串
生成日歷。
get_month_name($month)
參數(shù): | $ month(int) - Month |
---|---|
返回: | 月份名稱 |
返回類型: | 串 |
$ month(int) - Month
返回:月份名稱
返回類型:字符串
根據(jù)提供的數(shù)字月份生成文本月份名稱。
get_day_names($day_type = '')
參數(shù): | $ day_type(string) - 'long','short'或'abr' |
---|---|
返回: | 日期名稱陣列 |
返回類型: | 排列 |
$day_type (string) – ‘long’, ‘short’, or ‘a(chǎn)br’
返回:日期名稱數(shù)組
返回類型:數(shù)組
根據(jù)提供的類型返回一組日期名稱(星期日,星期一等)。期權(quán):多頭,空頭,abr。如果未提供`$ day_type`(或者提供了無(wú)效類型),則此方法將返回“縮寫(xiě)”樣式。
adjust_date($month, $year)
參數(shù): | $ month(int) - Month $ year(int) - Year |
---|---|
返回: | 包含月份和年份的關(guān)聯(lián)數(shù)組 |
返回類型: | 排列 |
$ month(int) - Month
$ year(int) - 年份
返回:包含月份和年份的關(guān)聯(lián)數(shù)組
返回類型:數(shù)組
此方法可確保您擁有有效的月份/年份。例如,如果您提交13作為月份,則年份將增加,月份將變?yōu)?月份:
print_r($this->calendar->adjust_date(13, 2014));
輸出:
Array ( month => '01' year => '2015' )
get_total_days($month, $year)
參數(shù): | $ month(int) - Month $ year(int) - Year |
---|---|
返回: | 指定月份中的天數(shù) |
返回類型: | INT |
$ month(int) - Month
$ year(int) - 年份
返回:指定月份中的天數(shù)
返回類型:int
給定月份的總天數(shù):
echo $this->calendar->get_total_days(2, 2012); // 29
注意
此方法是Date Helper函數(shù)的別名days_in_month()
。
default_template()
返回: | 一組模板值 |
---|---|
返回類型: | 排列 |
parse_template()
返回: | CI_Calendar實(shí)例(方法鏈接) |
---|---|
返回類型: | CI_Calendar |