目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于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 辅助函数
文字

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
上一篇:下一篇: