©
本文档使用 PHP中文网手册 发布
Calendar类可让您动态创建日历。您的日历可以通过使用日历模板进行格式化,从而可以100%控制其设计的各个方面。另外,您可以将数据传递到日历单元格。
使用日历类
初始化类
显示日历
将数据传递给您的日历单元格
设置显示首选项
显示下一个/上一个月的链接
创建日历模板
类参考
像CodeIgniter中的大多数其他类一样,Calendar类在您的控制器中使用$ this-> load-> library函数进行初始化:
$this->load->library('calendar');
加载后,Calendar对象将可用:
$this->calendar
以下是一个非常简单的例子,展示了如何显示日历:
$this->load->library('calendar');echo $this->calendar->generate();
以上代码将根据您的服务器时间生成当前月/年的日历。要显示特定月份和年份的日历,您需要将此信息传递给日历生成功能:
$this->load->library('calendar');echo $this->calendar->generate(2006, 6);
以上代码将生成一个日历,显示2006年6月份。第一个参数指定年份,第二个参数指定月份。
要将数据添加到日历单元格中,需要创建一个关联数组,其中的键与您希望填充的日期相对应,并且数组值包含数据。该数组传递给日历生成函数的第三个参数。考虑这个例子:
$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天将成为指向您提供的网址的链接。
注意
默认情况下,它假定你的数组将包含链接。在下面解释日历模板的部分中,您将了解如何自定义如何处理传递到单元格的数据,以便传递不同类型的信息。
您可以设置七种偏好来控制日历的各个方面。首选项是通过在加载函数的第二个参数中传递首选项数组来设置的。这里是一个例子:
$prefs = array( 'start_day' => 'saturday', 'month_type' => 'long', 'day_type' => 'short'); $this->load->library('calendar', $prefs); echo $this->calendar->generate();
上面的代码将在星期六开始日历,使用“长”月标题和“短”日名称。有关以下偏好的更多信息。
偏爱 | 默认 | 选项 | 描述 |
---|---|---|---|
模板 | 没有 | 没有 | 包含您的日历模板的字符串或数组。请参阅下面的模板部分。 |
当地时间 | 时间() | 没有 | 一个对应于当前时间的Unix时间戳。 |
START_DAY | 星期日 | 任何一周(星期日,星期一,星期二等) | 设置日历开始的星期几。 |
month_type | long | 长短 | 确定标题中使用的月份名称的版本。long = 1月,short = 1月。 |
day_type | 四月 | 长,短,abr | 确定要在列标题中使用的星期几名称的版本。long =星期日,short = Sun,abr = Su。 |
show_next_prev | 假 | TRUE / FALSE(布尔) | 确定是否显示允许切换到下一个/前几个月的链接。请参阅下面有关此功能的信息。 |
next_prev_url | 控制器/方法 | 一个URL | 设置下一个/上一个日历链接中使用的基本路径。 |
show_other_days | 假 | TRUE / FALSE(布尔) | 确定是否显示共享日历月的第一个或最后一个星期的其他月份的日期。 |
要让您的日历通过下一个/上一个链接动态增加/减少,需要设置类似于此示例的日历代码:
$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));
你会注意到关于上述例子的一些事情:
您必须将“show_next_prev”设置为TRUE。
您必须在“next_prev_url”首选项中将该URL提供给包含日历的控制器。如果你不这样做,它将被设置为当前的控制器/方法。
您必须通过它们出现的URI段向日历生成功能提供“年”和“月”(注意:日历类会自动将年/月添加到您提供的基本URL中)。
通过创建日历模板,您可以100%控制日历的设计。使用字符串方法,日历的每个组件都将被放置在一对伪变量中,如下所示:
$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();
使用数组方法,您将传递key => value
对。您可以传递尽可能多或更少的值。省略的键将使用日历类中继承的默认值。
例:
$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()])
参数: | $ config(array) - 配置参数 |
---|---|
返回: | CI_Calendar实例(方法链接) |
返回类型: | CI_Calendar |
$ config(array) - 配置参数
返回:CI \ _Calendar实例(方法链接)
返回类型:CI \ _Calendar
初始化日历首选项。接受一个关联数组作为输入,包含显示首选项。
generate([$year = ''[, $month = ''[, $data = array()]]])
参数: | $ year(int) - Year $ month(int) - Month $ data(array) - 要在日历单元格中显示的数据 |
---|---|
返回: | HTML格式的日历 |
返回类型: | 串 |
$ year(int) - 年份
$ month(int) - Month
$ data(array) - 要在日历单元格中显示的数据
返回:HTML格式的日历
返回类型:字符串
生成日历。
get_month_name($month)
参数: | $ month(int) - Month |
---|---|
返回: | 月份名称 |
返回类型: | 串 |
$ month(int) - Month
返回:月份名称
返回类型:字符串
根据提供的数字月份生成文本月份名称。
get_day_names($day_type = '')
参数: | $ day_type(string) - 'long','short'或'abr' |
---|---|
返回: | 日期名称阵列 |
返回类型: | 排列 |
$day_type (string) – ‘long’, ‘short’, or ‘abr’
返回:日期名称数组
返回类型:数组
根据提供的类型返回一组日期名称(星期日,星期一等)。期权:多头,空头,abr。如果未提供`$ day_type`(或者提供了无效类型),则此方法将返回“缩写”样式。
adjust_date($month, $year)
参数: | $ month(int) - Month $ year(int) - Year |
---|---|
返回: | 包含月份和年份的关联数组 |
返回类型: | 排列 |
$ month(int) - Month
$ year(int) - 年份
返回:包含月份和年份的关联数组
返回类型:数组
此方法可确保您拥有有效的月份/年份。例如,如果您提交13作为月份,则年份将增加,月份将变为1月份:
print_r($this->calendar->adjust_date(13, 2014));
输出:
Array ( month => '01' year => '2015' )
get_total_days($month, $year)
参数: | $ month(int) - Month $ year(int) - Year |
---|---|
返回: | 指定月份中的天数 |
返回类型: | INT |
$ month(int) - Month
$ year(int) - 年份
返回:指定月份中的天数
返回类型:int
给定月份的总天数:
echo $this->calendar->get_total_days(2, 2012); // 29
注意
此方法是Date Helper函数的别名days_in_month()
。
default_template()
返回: | 一组模板值 |
---|---|
返回类型: | 排列 |
parse_template()
返回: | CI_Calendar实例(方法链接) |
---|---|
返回类型: | CI_Calendar |