Spec-Zone.ru › CodeIgniter 3

Класс Calendaring

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

  • Использование класса Calendaring
    • Инициализация класса
    • Отображение календаря
    • Передача данных в ячейки календаря
    • Настройка параметров отображения
    • Отображение ссылок на предыдущий/следующий месяц
    • Создание шаблона календаря
  • Справочник по классу

Использование класса Calendaring

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

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

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

После загрузки объект 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/06/03/',
        7  => 'http://example.com/news/article/2006/06/07/',
        13 => 'http://example.com/news/article/2006/06/13/',
        26 => 'http://example.com/news/article/2006/06/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();

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

Параметр Значение по умолчанию Варианты Описание
шаблон Нет Нет
Строка или массив, содержащий ваш шаблон календаря.
См. раздел шаблона ниже.
local_time time() Нет Маркер времени Unix, соответствующий текущему времени.
start_day воскресенье Любой день недели (воскресенье, понедельник, вторник и т. д.) Устанавливает день недели, с которого должен начинаться календарь.
month_type полное полное, краткое
Определяет, какую версию имени месяца использовать в заголовке.
полное = Январь, краткое = Янв.
day_type сокращенное полное, краткое, сокращенное
Определяет, какую версию имен дней недели использовать в заголовках столбцов.
полное = Воскресенье, краткое = Вс, сокращенное = Вс.
show_next_prev ЛОЖЬ ИСТИНА/ЛОЖЬ (булево)
Определяет, отображать ли ссылки, позволяющие переключаться на предыдущий/следующий месяц. Смотрите информацию об этой функции ниже.
next_prev_url контроллер/метод URL-адрес Устанавливает базовый путь, используемый в ссылках на следующий/предыдущий календарь.
show_other_days ЛОЖЬ ИСТИНА/ЛОЖЬ (булево)
Определяет, отображать ли дни других месяцев, которые разделяют первую или последнюю неделю месяца календаря.

Отображение ссылок на предыдущий/следующий месяц

Для того, чтобы ваш календарь мог динамически увеличивать/уменьшать значения с помощью ссылок «следующий/предыдущий», необходимо настроить код календаря, аналогично этому примеру:

$prefs = array(
        'show_next_prev'  => TRUE,
        'next_prev_url'   => 'http://example.com/index.php/calendar/show/'
);

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

echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

Вы заметите несколько моментов в вышеприведенном примере:

  • Вы должны установить «show_next_prev» в ИСТИНА.
  • Вы должны указать URL-адрес контроллера, содержащего ваш календарь, в параметре «next_prev_url». В противном случае он будет установлен на текущий контроллер/метод.
  • Вы должны указать «год» и «месяц» в функции генерации календаря через сегменты URI, где они появляются (Примечание: класс календаря автоматически добавляет год/месяц к предоставленному вами базовому URL).

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

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

$prefs['template'] = '

        {table_open}<table border="0" cellpadding="0" cellspacing="0">{/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>{/cal_row_start}
        {cal_cell_start}<td>{/cal_cell_start}
        {cal_cell_start_today}<td>{/cal_cell_start_today}
        {cal_cell_start_other}<td class="other-month">{/cal_cell_start_other}

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

        {cal_cell_no_content}{day}{/cal_cell_no_content}
        {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}

        {cal_cell_blank}&nbsp;{/cal_cell_blank}

        {cal_cell_other}{day}{/cal_cel_other}

        {cal_cell_end}</td>{/cal_cell_end}
        {cal_cell_end_today}</td>{/cal_cell_end_today}
        {cal_cell_end_other}</td>{/cal_cell_end_other}
        {cal_row_end}</tr>{/cal_row_end}

        {table_close}</table>{/table_close}
';

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

echo $this->calendar->generate();

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

Пример:

$prefs['template'] = array(
        'table_open'           => '<table class="calendar">',
        'cal_cell_start'       => '<td class="day">',
        'cal_cell_start_today' => '<td class="today">'
);

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

echo $this->calendar->generate();

Справочник по классу

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

Экземпляр CI_Calendar (цепление методов)

Тип возвращаемого значения:

CI_Calendar

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

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

Календарь в формате HTML

Тип возвращаемого значения:

string

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

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

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

Тип возвращаемого значения:

string

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

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

Массив названий дней

Тип возвращаемого значения:

array

Возвращает массив названий дней недели (воскресенье, понедельник и т.д.) в зависимости от указанного типа. Доступные варианты: long, short, abr. Если тип не указан (или указан неверный тип), метод вернёт значение в формате “abbreviated”.

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

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

Тип возвращаемого значения:

array

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

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

вывод:

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

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

Тип возвращаемого значения:

int

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

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

Примечание

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

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

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

parse_template()
Возвращает: Экземпляр CI_Calendar (цепление методов)
Тип возвращаемого значения: CI_Calendar

Извлекает данные из шаблона {pseudo-variables} для отображения календаря.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/calendar.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API