2011-07-20 7 views
0

私はカレンダークラスについて質問があります。カレンダーの日数は、データベースのデータをURLに年月が入っても問題ありませんが、最初にカレンダーでページを読み込むと、URLに年と月がありません年と月を把握する方法がわかりません。Codeigniter Calendar質問

URLに年と月がない場合、ページの読み込み時にカレンダーの予定を設定するにはどうすればよいですか?

コントローラ

/** 
    * memberCalendar - displays the member calendar page 
    */ 
    function memberCalendar() 
    { 
     $prefs = array (
       'start_day'  => 'sunday', 
       'month_type'  => 'long', 
       'day_type'  => 'short', 
       'show_next_prev' => TRUE, 
       'next_prev_url' => site_url('member/memberCalendar') 
      ); 

     $year = $this->uri->segment(3); 
     $month = $this->uri->segment(4); 

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

     $events = $this->member_model->get_member_events($year, $month); 

     $calendarEvents = array(); 

     foreach($events as $event) { 

      $day = substr($event->event_date, 8, 2); // get the day 

      // if the first digit is a 0, such as in 03, remove the 0 so it becomes 3 
      if(substr($day, 0, 1) == 0) { 
       $day = substr($day, 1, 1); 
      } 

      $calendarEvents[$day] = 'http://example.com/news/article/'.$event->event_title; 
     } 

     $content_data['calendar'] = $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4), $calendarEvents); 
     $content_data['firstName'] = $this->session->userdata('firstName'); 
     $data['sess'] = $this->session; 
     $data['content'] = $this->load->view('member/memberCalendar', $content_data, true); 
     $this->load->view('template/admin', $data); 
    } 

モデル

/* 
    * function which gets the member calendar events 
    */ 
    function get_member_events($year, $month) 
    { 
     $query = $this->db->select('event_date, event_title, event_content')->from('member_calendar')->like('event_date', "$year-$month", 'after')->get(); 

     // if there is more than one row 
     if($query->num_rows > 0) 
     { 
      return $query->result(); 
     } else { 
      return false; 
     } 
    } 

答えて

2

Iティあなたはパラメータとデフォルトの引数を使用する方が良いでしょう:

public function memberCalendar($year = FALSE, $month = FALSE) 
{ 
    if($year === FALSE) $year = date('Y'); 
    if($month === FALSE) $month = date('m'); 

    // continue as normal until calendar->generate 
    $content_data['calendar'] = 
        $this->calendar->generate($year, $month, $calendarEvents); 

    // continue as normal 
} 
0

ちょうどあなたがカレンダーを表示したときにデフォルトとして現在の年と月をロードするために

if ($this->uri->total_segments() > 2) 
{ 
     $year = $this->uri->segment(3); 
     $month = $this->uri->segment(4); 
} 
else 
{ 
     $year = date('Y'); 
     $month = date('m'); 
} 

ような何かを