2012-04-14 79 views
0

我有一個顯示每月日曆的日曆控制器和模型。用戶可以點擊上一個和下一個超鏈接遍歷數月。我還能夠爲每一天生成一個唯一的URL,因此當有人想要在2012年4月10日點擊時,例如他們會得到類似.../2012/04/10的網址。我的問題是,當我到另一個月時,所有的日期URL仍然顯示4月爲月份。在Codeigniter日曆中爲每個日期生成唯一的URL

控制器

function display($year = null, $month = null) { 

    $this->load->model('CalendarModel'); 

    if ($day = $this->input->post('day')) 
    { 
     $this->CalendarModel->add_calendar_data("$year-$month-$day", $this->input->post('data')); 
    } 

    $data['Calendar'] = $this->CalendarModel->generate($year, $month); 

    $this->load->view('Calendar', $data); 

} 

型號

class CalendarModel extends CI_Model 
{ 

    var $conf; 

    function CalendarModel() 
    { 
     $date = (!isset($_GET['month']) && !isset($_GET['year'])) ? time() : strtotime($_GET['month'] . '/1/' . $_GET['year']); 

     $day = date('d', $date); 
     $month = date('m', $date); 
     $year = date('Y', $date); 

     $this->conf = array(
      'start_day' => 'sunday', 
      'show_next_prev' => true, 
      'next_prev_url' => '/CodeIgniter/index.php/Calendar/display' 
     ); 

     $this->conf['template'] = ' 
      {table_open}<table border="0" cellpadding="0" cellspacing="0" class="calendar">{/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 class="days">{/cal_row_start} 
      {cal_cell_start}<td class="day">{/cal_cell_start} 

      {cal_cell_content} 
       <div class="day_num">{day}</div> 
       <div class="content">{content}</div> 
      {/cal_cell_content} 
      {cal_cell_content_today} 
       <div class="day_num highlight">{day}</div> 
       <div class="content">{content}</div> 
      {/cal_cell_content_today} 

      {cal_cell_no_content}<div class="day_num"><a href="/'.$year.'/'.$month.'/{day}">{day}</a></div>{/cal_cell_no_content} 
      {cal_cell_no_content_today}<div class="day_num"><a href="/'.$year.'/'.$month.'/{day}">{day}</a></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} 
     '; 

    } 

    function generate ($year, $month) 
    { 

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

     //$cal_data = $this->get_calendar_data($year, $month); 

     return $this->calendar->generate($year, $month); 

    } 

} 

回答

1

工作的呢?

function CalendarModel($year = null, $month = null, $day = null) 
    {  
     //$date = (!isset($_GET['month']) && !isset($_GET['year'])) ? time() : strtotime($_GET['month'] . '/1/' . $_GET['year']); 
     //$day = date('d', $date); 
     //$month = date('m', $date); 
     // $year = date('Y', $date); 
     if ((is_null($year) || (is_null($month)) 
      { 
         // Do something if needed? 
      } 

      $this->conf = array(.... {continue rest of controller here as above}