캘린더링 클래스¶
캘린더 클래스를 사용하면 캘린더를 동적으로 만들 수 있습니다. 캘린더 템플릿을 통해 캘린더를 포맷할 수 있어 디자인의 모든 측면을 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년 6월의 캘린더를 생성합니다. 첫 번째 매개변수는 연도, 두 번째 매개변수는 월을 지정합니다.
캘린더 셀에 데이터 전달¶
캘린더 셀에 데이터를 추가하려면 키가 채울 날짜에 해당하고 배열 값에 데이터가 포함된 연관 배열을 만들어야 합니다. 배열은 캘린더 생성 함수의 세 번째 매개변수로 전달됩니다. 다음 예시를 참고하세요:
$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을 가리키는 링크가 됩니다.
참고
기본적으로 배열에 링크가 포함되어 있다고 가정합니다. 아래의 캘린더 템플릿 섹션에서 셀에 전달된 데이터 처리 방법을 커스터마이징하여 다른 유형의 정보를 전달하는 방법을 볼 수 있습니다.
표시 기본 설정¶
캘린더의 다양한 측면을 제어하기 위해 설정할 수 있는 7가지 기본 설정이 있습니다. 기본 설정은 로드 함수의 두 번째 매개변수에 기본 설정 배열을 전달하여 설정합니다. 예시:
$prefs = array(
'start_day' => 'saturday',
'month_type' => 'long',
'day_type' => 'short'
);
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();
위 코드는 캘린더를 토요일부터 시작하고, “long” 월 헤딩, “short” 요일 이름을 사용합니다. 기본 설정에 대한 자세한 내용은 아래를 참조하세요.
기본 설정 |
기본값 |
옵션 |
설명 |
|---|---|---|---|
template |
없음 |
없음 |
캘린더 템플릿이 포함된 문자열 또는 배열. 아래 템플릿 섹션 참조. |
local_time |
time() |
없음 |
현재 시간에 해당하는 Unix 타임스탬프. |
start_day |
sunday |
요일 (sunday, monday, tuesday 등) |
캘린더를 시작할 요일을 설정합니다. |
month_type |
long |
long, short |
헤더에 사용할 월 이름 버전을 결정합니다. long = January, short = Jan. |
day_type |
abr |
long, short, abr |
열 헤더에 사용할 평일 이름 버전을 결정합니다. long = Sunday, short = Sun, abr = Su. |
show_next_prev |
FALSE |
TRUE/FALSE (boolean) |
다음/이전 월로 이동하는 링크를 표시할지 여부를 결정합니다. 아래 이 기능에 대한 정보 참조. |
next_prev_url |
controller/method |
URL |
다음/이전 캘린더 링크에 사용되는 기본 경로를 설정합니다. |
show_other_days |
FALSE |
TRUE/FALSE (boolean) |
캘린더 월의 첫째 주 또는 마지막 주를 공유하는 다른 달의 날짜를 표시할지 여부를 결정합니다. |
다음/이전 월 링크 표시¶
다음/이전 링크를 통해 캘린더를 동적으로 증가/감소시키려면 다음 예시와 유사하게 캘린더 코드를 설정해야 합니다:
$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”를 TRUE로 설정해야 합니다.
“next_prev_url” 기본 설정에 캘린더가 포함된 컨트롤러 URL을 제공해야 합니다. 제공하지 않으면 현재 controller/method로 설정됩니다.
URI 세그먼트를 통해 캘린더 생성 함수에 “year”와 “month”를 제공해야 합니다. (참고: 캘린더 클래스는 자동으로 연도/월을 제공한 기본 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}"><<</a></th>{/heading_previous_cell}
{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th><a href="{next_url}">>></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} {/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 인스턴스 (메소드 체이닝)
- 반환 형식:
캘린더링 기본 설정을 초기화합니다. 표시 기본 설정을 포함하는 연관 배열을 입력으로 받습니다.
- 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
제공된 유형을 기반으로 요일 이름(Sunday, Monday 등) 배열을 반환합니다. 옵션: long, short, abr.
$day_type이 제공되지 않거나 유효하지 않은 유형이 제공되면 “abbreviated” 스타일을 반환합니다.
- adjust_date($month, $year)¶
- 매개변수:
$month (
int) – 월$year (
int) – 연도
- 반환:
월과 연도를 포함하는 연관 배열
- 반환 형식:
array
이 메소드는 유효한 월/연도를 가지도록 합니다. 예를 들어 월로 13을 제출하면 연도가 증가하고 월이 1월이 됩니다:
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
참고
이 메소드는 Date 헬퍼 함수
days_in_month()의 별칭입니다.
- default_template()¶
- 반환:
템플릿 값 배열
- 반환 형식:
array
기본 템플릿을 설정합니다. 이 메소드는 자체 템플릿을 만들지 않았을 때 사용됩니다.
- parse_template()¶
- 반환:
CI_Calendar 인스턴스 (메소드 체이닝)
- 반환 형식:
캘린더를 표시하는 데 사용되는 템플릿
{pseudo-variables}내의 데이터를 추출합니다.