Класс календаря 

    Класс календаря позволяет динамически создавать календари. Календари могут быть отформатированы с помощью шаблона календаря, обеспечивая 100% контроль над каждым аспектом своей конструкции. Кроме того, вы можете передать данные в ячейки вашего календаря.

    Использование класса календаря 

    Инициализация класса 

    Как и большинство других классов CodeIgniter, класс календаря инициализируется в контроллере используя функцию $this->load->library:

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

    После загрузки календаря, объект будет доступен через:

    $this->calendar
    

    Показ календаря 

    Вот очень простой пример, показывающий, как можно отобразить календарь:

    $this->load->library('calendar');
    echo $this->calendar->generate();
    

    Приведенный выше код будет генерировать календарь на текущий месяц/год, основанный на времени вашего сервера. Чтобы отобразить календарь для конкретного месяца и года вам нужно передать эту информацию в календарь следующей функцией:

    $this->load->library('calendar');
    echo $this->calendar->generate(2006, 6);
    

    Приведенный выше код будет генерировать календарь с указанием месяца Июнь 2006 года. Первый параметр указывает год, второй параметр указывает месяц.

    Передача данных в ячейки календаря 

    Для добавления данных в ячейки календаря предполагается создание ассоциативного массива в котором ключи соответствуют дням, которые вы хотите заполнить, а значения массива содержат данные. Массив передается третьим параметром функции производящей календарь. Рассмотрим такой пример:

    $this->load->library('calendar');
    
    $data = array(
            3  => 'http://example.com/news/article/2006/03/',
            7  => 'http://example.com/news/article/2006/07/',
            13 => 'http://example.com/news/article/2006/13/',
            26 => 'http://example.com/news/article/2006/26/'
    );
    
    echo $this->calendar->generate(2006, 6, $data);
    

    Используя приведенный выше пример, номера дней 3, 7, 13 и 26 станут ссылками указывающими на указанные вами URLы.

    Примечание

    По умолчанию предполагается, что ваш массив будет содержать ссылки. В разделе, который поясняет шаблон календаря, вы увидите каким образом данные передаются в ячейки для обработки и какие можно передавать виды информации.

    Настройка установок отображения 

    Существует семь настроек с помощью которых можно управлять различными аспектами календаря. Настройки устанавливаются путем передачи массива настроек втрорым параметром функции загрузки. Вот пример:

    $prefs = array(
            'start_day'    => 'saturday',
            'month_type'   => 'long',
            'day_type'     => 'short'
    );
    
    $this->load->library('calendar', $prefs);
    
    echo $this->calendar->generate();
    

    Приведенный выше код будет начинать календарь с субботы, используя “длинные” названия месяцев и “короткие” названия дней недели. Больше информации о настройках ниже.

    Настройка По умолчанию Опции Описание
    template (шаблон) Нет Нет
    Строка или массив содержащий шаблон календаря.
    Смотрите в разделе шаблона ниже.
    local_time time() Нет Метка времени Unix, соответствующую текущему времени.
    start_day sunday (воскресенье) Любой день недели (sunday(воскресенье), monday(понедельник), tuesday(вторник) и т.д.) Установка дня недели начала календаря.
    month_type (тип месяца) long long (длинный), short (короткий)
    Определяет какую версию использовать в названии месяца.
    long = Январь, short = Янв.
    day_type (тип дня) abr long (длинный), short (короткий), abr (аббревиатура)
    Определяет, какую версию использовать в названии дней недели
    Заголовки столбцов. long = Воскресенье, short = Вос, abr = Вс.
    show_next_prev (показывать след/пред) FALSE TRUE/FALSE (булево)
    Определяет будут ли отображаться ссылки позволяющие переключаться
    на след/пред месяц. Смотрите информацию об этой функции ниже.
    next_prev_url (ссылка след/пред) controller/method (контроллер/метод) URL Установка базовых URL, используемых в следующий/предыдущий ссылке.
    show_other_days (показывать другие дни) FALSE TRUE/FALSE (булево)
    Определяет следует ли отображать дни других месяцев, которые разделяют
    первую или последнюю неделю календарного месяца.

    Создание шаблона календаря 

    Создавая шаблон календаря у вас есть 100% контроль над дизайном календаря. Используя строковый метод, каждая составляющая вашего календаря будет размещена в паре псевдо-переменных, как показано здесь:

    $prefs['template'] = '
    
            {table_open}{/table_open}        {heading_row_start}{/heading_row_start}        {heading_previous_cell}{/heading_previous_cell}        {heading_title_cell}{/heading_title_cell}        {heading_next_cell}{/heading_next_cell}        {heading_row_end}{/heading_row_end}        {week_row_start}{/week_row_start}        {week_day_cell}{/week_day_cell}        {week_row_end}{/week_row_end}        {cal_row_start}{/cal_row_start}        {cal_cell_start}{/cal_cell_end}        {cal_cell_end_today}{/cal_cell_end_today}        {cal_cell_end_other}{/cal_cell_end_other}        {cal_row_end}{/cal_row_end}        {table_close}
    << {heading} >>
    {week_day}
    {/cal_cell_start} {cal_cell_start_today}{/cal_cell_start_today} {cal_cell_start_other}{/cal_cell_start_other} {cal_cell_content}{day}{/cal_cell_content} {cal_cell_content_today}{/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} {/cal_cell_blank} {cal_cell_other}{day}{/cal_cel_other} {cal_cell_end}
    {/table_close}
    '; $this->load->library('calendar', $prefs); echo $this->calendar->generate();

    Используя метод массива, вы передаете пару ключ => значение. Вы можете передать так много или так мало значения сколько пожелаете. Пропущенные ключи будут использовать значения по умолчанию наследуемые в классе календаря.

    Пример:

    $prefs['template'] = array(
            'table_open'           => '','cal_cell_start'=>'
    ', 'cal_cell_start_today' => '' ); $this->load->library('calendar', $prefs); echo $this->calendar->generate();

    Настройки класса 

    class CI_Calendar 
    initialize([$config = array()]) 
    Параметры:
    • $config (массив) – Параметры конфигурации
    Возвращает:

    CI_Calendar экземпляр (метод цепочек)

    Возвращаемый тип:

    CI_Calendar

    Инициализирует настройки календаря. Принимает ассоциативный массив в качестве входных данных, содержащих параметры отображения.

    generate([$year = ''[, $month = ''[, $data = array()]]]) 
    Параметры:
    • $year (число) – Год
    • $month (число) – Месяц
    • $data (массив) – Данные для отображения в ячейках календаря
    Возвращает:

    HTML-форматированный календарь

    Возвращаемый тип:

    Строка

    Генерирует календарь.

    get_month_name($month) 
    Параметры:
    • $month (число) – Месяц
    Возвращает:

    Название месяца

    Возвращаемый тип:

    Строка

    Генерирует текстовое название месяца на основе номера месяца.

    get_day_names($day_type = '') 
    Параметры:
    • $day_type (строка) – ‘long’, ‘short’, or ‘abr’
    Возвращает:

    Массив с названиями дней недели

    Возвращаемый тип:

    Массив

    Возвращает массив с названиями дней недели (Понедельник, Вторник и т.д.) исходя из предоставляемого типа. Опции: long (длинный), short(короткий), abr(аббревиатура). Если нет $day_type предоставляется (или если недопустимый тип)этот метод вернет “аббревиатуру”.

    adjust_date($month, $year) 
    Параметры:
    • $month (число) – Месяц
    • $year (число) – Год
    Возвращает:

    Ассоциативный массив содержащий месяц и год

    Возвращаемый тип:

    Массив

    Этот метод гарантирует что есть действительный месяц/год. Например, если вы укажите 13 как месяц, год увеличится и месяц будет январь:

    print_r($this->calendar->adjust_date(13, 2014));
    

    выведет:

    Array
    (
            [month] => '01'
            [year] => '2015'
    )
    
    get_total_days($month, $year) 
    Параметры:
    • $month (число) – Месяц
    • $year (число) – Год
    Возвращает:

    Количество дней в указанном месяце

    Возвращаемый тип:

    Число

    Количество дней в данном месяце:

    echo $this->calendar->get_total_days(2, 2012);
    // 29
    

    Примечание

    Этот метод является псевдонимом для Date Helper функции days_in_month().

    default_template() 
    Возвращает:Массив значений шаблона
    Возвращаемый тип:Массив

    Устанавливает шаблон по умолчанию. Этот метод используется если еще не создан свой собственный шаблон.

    parse_template() 
    Возвращает:CI_Calendar экземпляр (метод цепочек)
    Возвращаемый тип:CI_Calendar

    Результаты данных в шаблоне {pseudo-variables} используются для отображения календаря.


    © Copyright 2014 - 2025, British Columbia Institute of Technology. Последнее обновление 22 Апреля 2018.