【问题标题】:Generating unique URLs for each date in the Codeigniter Calendar为 Codeigniter 日历中的每个日期生成唯一的 URL
【发布时间】:2012-04-14 05:53:49
【问题描述】:

我有一个显示月历的日历控制器和模型。用户可以单击上一个和下一个超链接来遍历月份。我还能够为每一天生成一个唯一的 URL,因此当有人想要点击 2012 年 4 月 10 日时,他们会得到一个类似于 .../2012/04/10 的 URL。我的问题是当我转到另一个月份时,所有日期 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);

    }

}

【问题讨论】:

    标签: php codeigniter


    【解决方案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}
    

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2021-02-13
      • 1970-01-01
      • 2014-03-09
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多