我制作了一个方法,用一个日历表写一个视图,该日历表显示使用日历类的一年中的所有月份。
控制器:
<?php
class Calendar extends CI_Controller {
public function this_year() {
$data['title'] = 'Calendar: ' . date('Y');
$this->load->library('calendar');
$prefs = array(
'local_time' => 'none',
'start_day' => 'sunday',
'month_type' => 'long',
'day_type' => 'short',
'show_next_prev' => FALSE,
'show_other_days' => TRUE,
'template' => '
{table_open}<table class="table table-condensed">{/table_open}
{heading_row_start}<tr class="info">{/heading_row_start}
{cal_cell_start_today}<td class="today">{/cal_cell_start_today}
{cal_cell_start_other}<td class="other-day">{/cal_cell_start_other}
'
);
$this->load->library('calendar', $prefs);
$data['calendar'] = '<table class="table-calendar"><tr>';
for ($i = 1; $i <= 12; $i++) {
if ($i % 3 == 0) {
$data['calendar'].= "<td>{$this->calendar->generate(date('Y'), $i)}</td>";
$data['calendar'].= '</tr><tr>';
}
else {
$data['calendar'].= "<td>{$this->calendar->generate(date('Y'), $i)}</td>";
}
}
$data['calendar'].= '</tr></table>';
$this->template->load('template/index', __CLASS__ . "/" . __FUNCTION__, $data);
}
}
*在VIEW上,只需回显'$ calendar'
它也有效,并返回this。
但是我没有找到一种方法来在日历类中使用模板仅突出显示当前月份。我尝试修改默认模板,但它不起作用,因为当我更改{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
的类时,它会修改所有月份的标签,例如this。
我正在使用基础课程教程中的默认方法(相同代码)。有什么建议吗?
答案 0 :(得分:0)
可以extend CI_Calendar
强制方法generate()
将$month
变量传递给parse_template()
方法。然后,parse_template($month)
将能够在{heading_row_start}<tr>{/heading_row_start}
上解析声明的模板时应用异常:
CI_Calendar::parse_template($month), 483
:
if($val == 'heading_row_start'){
if( $month == date('m')){
$this->replacements[$val] = '<tr class="info">';
}
}
else{
$this->replacements[$val] = $match[1];
}