CI事件日历在点击下一个/上一个之前不显示当前月份数据

时间:2016-03-07 06:14:24

标签: codeigniter

使用此代码,CI日历可以正常工作,从数据库中查看数据,单击下一个/上一个。但是第一次当日历以默认当前月份打开并且没有显示来自数据库的任何数据时,在控制器名称后面的ulr中没有year, month参数。我真的无法找到我实际错过的东西。

控制器:

    class my_calendar extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('logindatamodel');
        $this->load->model('my_calModel');
    }
    public function showcal($year=null, $month=null){
        $user_data['userinfo'] = $this->logindatamodel->login_data();
        $data['calendar']=$this->my_calModel->generate($year,$month);

        $this->load->view('common/header', $user_data);
        $this->load->view('common/menu', $user_data);
        $this->load->view('my_calendar',$data);
        $this->load->view('common/footer');
    }
}

型号:

  class my_calModel extends CI_Model{
    var $conf;
    function __construct() {
        parent::__construct();
        $this->conf = array(
            'start_day'       => 'saturday',
            'show_next_prev'  => TRUE,
            'next_prev_url'   => base_url().'my_calendar/showcal'
            );
    }

    public function get_calendar_data($year, $month){
        $query= $this->db->select('scheduleDate, event_data')
                     ->from('tbl_calendar')
                     ->like('scheduleDate',"$year-$month",'after')
                     ->get();
        $cal_data=array();

        foreach($query->result() as $row){
            $index=ltrim(substr($row->scheduleDate,8,2),'0');
            $cal_data[$index]=$row->event_data;
        }
        return $cal_data;
    }

    public function generate($year, $month){
        $this->load->library('calendar', $this->conf);
        $cal_data=$this->get_calendar_data($year, $month);
        return $this->calendar->generate($year,$month,$cal_data);
    }
}  

1 个答案:

答案 0 :(得分:0)

这有点旧,原来的海报可能已经修好而不回来告诉论坛。但对于其他被困的人来说,这就是我解决类似问题的方法。您的控制器应如下所示:

 public function showcal($year=null, $month=null){

    if (!$year) {
        $year = date('Y');
    }
    if (!$month) {
        $month = date('m');
    }
    $user_data['userinfo'] = $this->logindatamodel->login_data();
    $data['calendar']=$this->my_calModel->generate($year,$month);

    $this->load->view('common/header', $user_data);
    $this->load->view('common/menu', $user_data);
    $this->load->view('my_calendar',$data);
    $this->load->view('common/footer');
}

记下月份和年份的初始化。原因是,由于函数中的参数传递的月份和年份设置为null,如果未在URL中输入月份和年份,则浏览器假定没有日期。但是通过初始化月份和年份,当前月份和年份将始终传递给控制器​​和模型,然后将获取正确的数据。

足够漫无边际。请原始海报检查并接受。

你真的。