【问题标题】:Codeigniter Calendar QuestionCodeigniter 日历问题
【发布时间】:2011-10-09 02:36:25
【问题描述】:

我有一个关于日历课程的问题。当url中有年份和月份时,我可以用数据库中的数据填充日历中的天数,但是当您第一次加载带有日历的页面时,url中没有年份和月份,所以我'不知道如何算出年份和月份。

当 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;
        }
    }

【问题讨论】:

    标签: php codeigniter calendar


    【解决方案1】:

    我认为你最好使用参数和默认参数:

    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
    }
    

    【讨论】:

      【解决方案2】:

      只是做一些类似的事情

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

      在查看日历时默认加载当前年份和月份

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        • 2011-03-04
        • 1970-01-01
        相关资源
        最近更新 更多