달력 Calendaring Class¶
캘린더 클래스를 이용하여 동적으로 캘린더를 만들 수 있습니다. 캘린더는 캘린더 템플릿을 통해서 형태가 결정되며, 100% 커스터마이징이 가능합니다. 게다가, 켈린더 셀(cells)에 데이터를 전달하여 사용할 수 있습니다.
캘린더 클래스 사용하기 Using the Calendaring Class¶
클래스 초기화 Initializing the Class¶
CodeIgniter의 다른 대부분의 클래스들 처럼 캘린더 클래스또한 컨트롤러에서 초기화 하며, $this->load->library 함수를 사용합니다:
$this->load->library('calendar');
일단 로드된 후에는 아래와 같이 캘린더 객체를 사용할 수 있습니다:
$this->calendar
캘린더 표시 Displaying a Calendar¶
다음과 같은 코드를 이용하여 캘린더를 표시할 수 있습니다:
$this->load->library('calendar');
echo $this->calendar->generate();
서버 시간을 기준으로 한 캘린더 대신 특정 월의 캘린더를 만들고 싶다면 다음과 같이 년,월을 캘린더 생성함수에 넘겨줍니다:
$this->load->library('calendar');
echo $this->calendar->generate(2006, 6);
위의 코드를 이용하면 2006년 6월의 캘린더가 생성됩니다. 첫 파라미터는 년을 두 번째 파라미터는 월을 나타냅니다.
캘린더 셀에 데이터 전달 Passing Data to your Calendar Cells¶
캘린더 셀로 데이터를 전달하려면 아래의 예제처럼 연상배열을 만들어서 캘린더 생성함수의 세 번째 파라미터로 넘겨줍니다. 연상배열의 키는 날짜를 나타내고, 값은 데이터를 나타냅니다. 예제:
$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 을 카리키는 링크가 될 것입니다.
Note
기본(default)적으로 당신이 만든 배열은 링크가 포함되어있다고 가정합니다. 아래 템플릿 항목을 보시면 당신은 전달된데이터가 어떻게 사용되는지, 어떻게 커스터마이징할지, 어떻게 다른 타입의 정보를 전달해서 사용할지 알수 있을 것입니다.
표시 설정 Setting Display Preferences¶
캘린더 표시 설정을 위해서 7가지 변수를 설정할 수 있습니다. 로드함수의두 번째 파라미터로 설정배열을 넘겨주어 설정을 적용시킵니다. 예제입니다:
$prefs = array(
'start_day' => 'saturday',
'month_type' => 'long',
'day_type' => 'short'
);
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();
위 코드에서는 캘린더가 토요일부터 시작하며,긴(long)월 이름,짧은(short) 날짜이름을 사용하도록 세팅합니다.더 많은 정보는 아래 테이블을 참조하세요.
Preference | Default | Options | Description |
---|---|---|---|
template | None | None |
|
local_time | time() | None | A Unix timestamp corresponding to the current time. |
start_day | sunday | Any week day (sunday, monday, tuesday, etc.) | Sets the day of the week the calendar should start on. |
month_type | long | long, short |
|
day_type | abr | long, short, abr |
|
show_next_prev | FALSE | TRUE/FALSE (boolean) |
|
next_prev_url | controller/method | A URL | Sets the basepath used in the next/previous calendar links. |
show_other_days | FALSE | TRUE/FALSE (boolean) |
|
이전달,다음달 링크 생성 Showing Next/Previous Month Links¶
이전달 다음달 링크를 만들어 동적으로 달을 이동하도록하고 싶다면 다음 코드가 필요합니다:
$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 새그먼트(segment)를 통해 년과 월을 캘린더 생성(generating)함수에 전달해야 합니다.(Note: 캘린더 클래스는 자동으로 년,월을 기본 URL에 추가할 것입니다.)
캘린더 템플릿 생성 Creating a Calendar Template¶
캘린더 템플릿을 통해서 디자인을 원하는 형태로 100% 수정 가능합니다. 캘린더의 각 부분은 아래와 같이 각각 한쌍의 축약코드변수(pseudo-variables) 안에 삽입됩니다:
$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 Reference¶
- class CI_Calendar¶
- initialize([$config = array()])¶
인수: - $config (array) – Configuration parameters
반환값: CI_Calendar instance (method chaining)
반환형: CI_Calendar
캘린더 설정을 초기화합니다. 표시 설정 등 입력값으로 연관배열을 받습니다.
- generate([$year = ''[, $month = ''[, $data = array()]]])¶
인수: - $year (int) – Year
- $month (int) – Month
- $data (array) – Data to be shown in the calendar cells
반환값: HTML-formatted calendar
반환형: 문자열
캘린더를 생성합니다.
- get_month_name($month)¶
인수: - $month (int) – Month
반환값: Month name
반환형: 문자열
제공된 숫자형 달에 기반한 문자형 달 이름을 생성합니다.
- get_day_names($day_type = '')¶
인수: - $day_type (string) – ‘long’, ‘short’, or ‘abr’
반환값: Array of day names
반환형: array
제공된 옵션(long, short, abr) 등에 따라 날 이름 (Sunday, Monday, etc.)의 배열을 반환합니다. 만약 $day_type 이 제공되지 않으면, 또는 유효하지 않은 값이면, 단축형 값을 반환합니다.
- adjust_date($month, $year)¶
인수: - $month (int) – Month
- $year (int) – Year
반환값: An associative array containing month and year
반환형: array
이 함수는 유효한 월/년을 가지고 있는지 확인합니다. 예를 들면, 달의 값에 13을 입력하면, 년(year) 의 값이 1 증가하고, 월은 1월이 됩니다:
print_r($this->calendar->adjust_date(13, 2014));
outputs:
Array ( [month] => '01' [year] => '2015' )
- get_total_days($month, $year)¶
인수: - $month (int) – Month
- $year (int) – Year
반환값: Count of days in the specified month
반환형: int
주어진 월에 총 일 수를 반환합니다:
echo $this->calendar->get_total_days(2, 2012); // 29
Note
This method is an alias for 날짜(Date Helper) function days_in_month().
- default_template()¶
반환값: An array of template values 반환형: 배열(array) 기본 템플릿을 세팅합니다. 이 함수는 당신의 고유 템플릿을 생성하지 않을 때 사용됩니다.
- parse_template()¶
반환값: CI_Calendar instance (method chaining) 반환형: CI_Calendar {pseudo-variables} 템플릿 내에서 변수를 표시하는데 사용됩니다.