directory search
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
characters

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

日历类

日历类可以让你动态创建日历.并且用日历模板对创建的日历格式化,100%的控制它的样式.另外,你可以传送数据到你的日历单元格中(比如创建一个链接).

初始化类

和大多数其他CI中的类一样,在控制器中初始化日历类用$this->load->library函数:

$this->load->library('calendar');

导入之后,日历类可以这样使用: $this->calendar

显示一个日历

这是一个简单的例子告诉你如何去显示一个日历:

$this->load->library('calendar');

echo $this->calendar->generate();

上面的代码将根据你服务器时间创建一个当前月/年的日历. 要显示一个指定月和年的日历,你要传递这些信息到日历生成函数:

$this->load->library('calendar');

echo $this->calendar->generate(2006, 6);

上面的代码将创建一个显示2006年6月的日历.第一个参数指定了年,第二个参数指定了月.

传数据到单元格

增加数据到日历的单元格就要创建一个关联数组,在这个数组中索引是你想链接的天数value值包含你要传入的值.数组通过日历创建函数的第三个参数被传入. 参考下面这个例子:

$this->load->library('calendar');

$data = array(
               3  => 'http://example.com/news/article/2006/03/',
               7  => 'http://example.com/news/article/2006/07/',
               13 => 'http://example.com/news/article/2006/13/',
               26 => 'http://example.com/news/article/2006/26/'
             );

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

使用上面的例子,天数3,7,13和26将变成链接指向你提供的URLs.

注意: 默认情况,系统假定你的数组中已经包含了链接. 在下面解释日历模板部分你会看到你可以自定义数据如何被传入日历单元格以便你可以传不同类型的信息.

设置偏好

有 7 种偏好可以让你设置日历的各个方面. 偏好被设置成数组通过导入函数的第二个参数被导入. 下面是一个例子:

$prefs = array (
               'start_day'    => 'saturday',
               'month_type'   => 'long',
               'day_type'     => 'short'
             );

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

echo $this->calendar->generate();

上面的代码将从礼拜六开始,用"长"月标题和"短"天数格式.更多关于偏好的信息请看下面.

Preference Default Value Options Description
template None None 模板字符串. See the template section below.
local_time time() None A Unix timestamp corresponding to the current time.
start_day sunday 一周内的任一天(sunday,monday,ect.) 指定每周的第一天
month_type long long, short 月份的显示样式.long = January, short = Jan.
day_type abr long, short, abr 星期的显示样式long = Sunday, short = Sun, abr = Su.
show_next_prev FALSE TRUE/FALSE (boolean) 是否显示“上个月”和“下个月”链接.
next_prev_url None A URL “上个月”和“下个月”链接地址.

显示下一月/上一月链接

要让你的日历通过下一月/上一月链接动态的减少/增加,可以仿照下面的例子建立你的日历:

$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段 (注意: 日历类自动添加年/月到你提供的base 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}">&lt;&lt;</a></th>{/heading_previous_cell}
   {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
   {heading_next_cell}<th><a href="{next_url}">&gt;&gt;</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}&nbsp;{/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);

echo $this->calendar->generate();

 

翻译贡献者: airwin, Hex, huanxiangwu, kissmumu, Roger_masslong
最后修改: 2009-09-12 15:25:03
Previous article: Next article: