用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6602|回复: 6
收起左侧

CodeIgniter类库之Calendar Class

[复制链接]
发表于 2007-11-26 19:24:32 | 显示全部楼层 |阅读模式
CodeIgniter作为一款优秀的PHP开源框架,提供了相当丰富的类库供编程人员使用,这其中也包括对日历进行处理的Calendar Class。    Claendar Class能够帮助我们动态的创建日历,支持使用模板对其进行样式化以便给提供更好的用户体验,还能够对日历中的日期单元格进行链接设置。
    在使用Calendar Class之前,需要使用
$this->load->library('calendar');

之后就可以使用$this->calendar对其进行操作。
$this->load->library('calendar');
$this->calendar->generate();

上面的代码会依据服务器上的当前年、月创建一个日历。如果想显示指定年月的日历则需要将年份和月份以参数的形式传递给generate函数。
$this->load->library('calendar');
$this->calendar->generate(2008, 8);

上面的代码会动态创建出2008年8月的日历。
若希望为日历中的某一天或是某些天指定超链接,则需要先构建一个数组,并在指中指定日期和链接地址,然后作为generate的第三个参数传入。
$this->load->library('calendar');
$data = array(
   3  => 'http://your-site.com/news/article/2008/03/',
   7  => 'http://your-site.com/news/article/2008/07/',
   13 => 'http://your-site.com/news/article/2008/13/',
   26 => 'http://your-site.com/news/article/2008/26/'
             );

$this->calendar->generate(2008, 6, $data);

上面的代码会将动态创建的日历中的3、7、13、26四个日期单元格设置为超链接。
如果希望可以动态的调整日历显示的月份,我们可以在日历上添加“上个月”和“下个月”的链接。CodeIgniter中的Calendar Class可以很简单快速的实现。
$prefs = array (
    'show_next_prev'  => TRUE,
    'next_prev_url'   => 'http://www.your-site.com/index.php/your-controller/your-function/'
  );

$this->load->library('calendar', $prefs);
$this->calendar->generate();

上面的代码就实现了“上个月”和“下个月”的链接。很简单,不是吗?现在应该感觉到CodeIgniter的Power了吧,真的很棒!!
Calenday Class为我们提供了若干个Preference,上面提到的“上个月”和“下个月”的显示就是其中的一个。
Preference
Default
Options
Description
start_daysunday一周内的任一天(sunday,monday,ect.)指定每周的第一天
month_typelonglong, short月份的显示样式long = January, short = Jan
day_typeabrlong, short, abr星期的显示样式long = Sunday, short = Sun, abr = Su
local_timetime()None
show_next_prevFALSETRUE/FALSE是否显示“上个月”和“下个月”链接
next_prev_urlNoneA URL“上个月”和“下个月”链接地址
templateNoneNone模板字符串
如果希望提供更好的用户体验,我们可以使用Template为日历指定一个模板,使其按我们的格式进行显示。
$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_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_end}</td>{/cal_cell_end}
   {cal_row_end}</tr>{/cal_row_end}
   {table_close}</table>{/table_close}

');
$this->load->library('calendar', $prefs);
$this->calendar->generate();

注:请将文章中的“'http://www.your-site.com”替换为您自己的网站地址,请将“your-controller”替换为您自己的控制器类名,请将“your-function”替换为您自己的控制器函数名称。

评分

参与人数 1威望 +5 收起 理由
Hex + 5 精品文章

查看全部评分

发表于 2007-11-27 10:30:26 | 显示全部楼层
加精!
发表于 2008-1-18 10:10:39 | 显示全部楼层
贴个效果图哦~~~~~~··
发表于 2008-1-18 10:57:48 | 显示全部楼层
哈哈。。顶。。。。:)
发表于 2012-3-7 13:59:39 | 显示全部楼层
发表于 2012-4-9 11:34:00 | 显示全部楼层
感觉要是有个效果图,这文章会让新手更容易接受
发表于 2012-4-11 16:11:01 | 显示全部楼层

本版积分规则