2012-04-14 7 views
0

Ich habe einen Kalender-Controller und ein Modell, das einen monatlichen Kalender anzeigt. Ein Benutzer kann auf die vorherigen und nächsten Hyperlinks klicken, um die Monate zu durchlaufen. Ich war auch in der Lage, eine eindeutige URL für jeden Tag zu generieren. Wenn jemand zum Beispiel auf den 10. April 2012 klicken möchte, erhält er eine URL wie .../2012/04/10. Mein Problem ist, dass, wenn ich zu einem anderen Monat gehe, alle Datums-URLs immer noch April als Monat anzeigen.Erstellen von eindeutigen URLs für jedes Datum im Codeigniter-Kalender

-Controller

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); 

} 

Modell

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); 

    } 

} 

Antwort

1

funktionierts?

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} 
Verwandte Themen