【问题标题】:Codeigniter Calendar within a div and changing monthdiv 中的 Codeigniter 日历和更改月份
【发布时间】:2015-11-19 01:35:59
【问题描述】:

我正在尝试将 CodeIgniter 日历用作事件日历,作为类似于 Facebook 的社交网络的一部分。在日历类的 CodeIgniter 手册中,它让您从控制器中调用 echo $this->calendar->generate() 方法。但是,我希望它出现在页面选项卡上的 div 标记中。这样在视图中使用回显可以吗?

其次,next_prev_url 使用 url 加载下个月或上个月。但是,我已经使用 url 获取有关用户的信息,例如他们的 id。当我现在尝试使用日历时,它将 user_id 作为月份或年份参数,让我看到 186 年 4 月的视图或类似的东西。如何在不使用 URL 的情况下加载下个月或上个月?

【问题讨论】:

  • 使用 jquery eventsCalendar
  • 第二个问题使用 ajax 加载日历。它无需刷新即可工作。

标签: php codeigniter calendar


【解决方案1】:

第一个问题:没关系,这是你的风格。要将逻辑与视图进一步分离,您可以将日历分配给变量。

$data['calendar'] = $this->calendar->generate();
$this->load->view('myview', $data);

第二:我不知道为什么你会在日历中获取用户 ID(可能是一些未闭合的引号),但不需要另一个 jquery 插件。我很久以前写过类似的东西。

//my-calendar-button is inside calendar template
jQuery(document).on('click', 'a.my-calendar-button', function(e){  
e.preventDefault();
    var link=this.href; //set link to controller in calendar template
$.ajax({
    url: link,
    type: "GET",
    dataType: "html",
    success: function (data) {
        var result = $('<div />').append(data).find('.my-calendar').html();

        $('.my-calendar').hide().html(result).fadeIn();
    },
    error: function (xhr, status) {
        alert("Sorry, there was a problem!");
    },
    complete: function (xhr, status) {
        $('.my-calendar').fadeIn();
    }
});

如果需要,还有控制器代码:

 public function getCalendar($year,$month,$eventType)
{
    $events=$this->event_model->get_month_events($year,(int)$month,$eventType);
    $prefs = array (
        'template' => $this->getCalendarTemplate(),
        'start_day'    => 'monday',
        'show_next_prev'  => TRUE,
        'month_type'   => 'long',
        'day_type'     => 'abr',
        'next_prev_url'   => '/ajax/calendar/' //it adds year and month automatically
    );

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

    $data['calendar']= $this->calendar->generate($year,$month,$events);
    return $this->load->view('/ajax/calendar',$data);
}

public function getCalendarTemplate()
{
    return $template = '

{table_open}<table>{/table_open}

{heading_row_start}<tr>{/heading_row_start}

{heading_previous_cell}<th><a class="my-calendar-button" 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 class="my-calendar-button" 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>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}

{cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content}
{cal_cell_content_today}<a href="{content}">{day}</a>{/cal_cell_content_today}

{cal_cell_no_content}{day}{/cal_cell_no_content}
{cal_cell_no_content_today}{day}{/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}
';

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    相关资源
    最近更新 更多