CI 묻고 답하기

제목 페이지네이션 attribute 관련 질문입니다.
카테고리 CI 2, 3
글쓴이 델리카토 작성시각 2016/11/09 13:51:49
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 20925   RSS

안녕하십니까? 페이지네이션과 관련해서 질문이 있어 글을 남깁니다.

페이지네이션에 보면 attribute를 배열로 넣는 부분이 있습니다.

이부분에서 궁금한것이 있습니다.

 

페이지네이션 라이브러리를 보면 config에서 설정한 param들을 한번 불러서 변수에 저장하고,

initialize에서 추가로 넣은 (base_url등) param값을 또 한번 불러서 변수에 저장합니다.

 

이때 initialize 부분을 보면 attributes 가 있으면 별도로 _parse_attributes함수를 실행시키고, 여기서 변수에 저장을 하는데,

이부분이 이렇게 되어있습니다.

protected function _parse_attributes($attributes)
	{
		isset($attributes['rel']) OR $attributes['rel'] = TRUE;
		$this->_link_types = ($attributes['rel'])
			? array('start' => 'start', 'prev' => 'prev', 'next' => 'next')
			: array();
		unset($attributes['rel']);

		$this->_attributes = '';
		foreach ($attributes as $key => $value)
		{
			$this->_attributes .= ' '.$key.'="'.$value.'"';
		}
	}

보시면 _attributes를 한번 비우고 foreach로 재 설정합니다.

 

즉, config파일에서 attribute를 설정하더라도 config파일 한번, 추후 추가(커스터마이징 부분)할때 한번 총 두번 실행되기 때문에 추후 실제 페이지네이션을 불러올때(커스터마이징 부분) param값에 attributes값이 없으면 지워버리는 거죠.

 

코드만 보면 이런데... 다른분들은 이부분을 잘 쓰고 계신것 같더라구요.

혹시 제가 놓치고 있는 것이 있는지, 있다면 어떤 것인지 궁금합니다.

버전은 3.1.2를 사용하고 있습니다.

 

이부분에 대해 아시는 분이 있으시면 답변 부탁드립니다.

감사합니다.

 

 

 다음글 Oracle DB에 로우 인서트 후 해당 로우가 사라지... (3)
 이전글 선배님들 라이브러리 호출 관련 질문합니다 ㅠ_ㅠ.. (8)

댓글

변종원(웅파) / 2016/11/09 16:39:08 / 추천 0

사용법을 잘못 알고 계시네요.

config 파일에 데이터를 넣어서 저장을 하면 initialize() 함수를 호출할 필요가 없습니다.

initialize()함수는 컨트롤러 내부에서 config를 다르게 사용하려고 할때 사용합니다.

매뉴얼 다시 읽어보세요. http://www.ciboard.co.kr/user_guide/kr/libraries/pagination.html

델리카토 / 2016/11/09 17:18:51 / 추천 0

네 ^^ 답변 감사합니다.

initialize함수를 호출 해서, 필요한 부분 base_url 이나 total_rows를 오버라이팅 해서 쓰고 있습니다.

일반적으로 이렇게 쓰시지 않나요? 이게 잘못된 방법인가요?

이부분을 config 파일에 넣긴 어려우니까요.

그런데 다른 파라메터는 추가로 저장(overwirte)이 되는데 attribute만 전부 리셋 되길래 여쭈어 보았습니다.

델리카토 / 2016/11/09 17:25:36 / 추천 0
$config['base_url']	= $base_url;
$config['total_rows']	= $total_cnt;
$config['per_page']	= $limit;
$config['uri_segment']	= $page_seg;
$config["attributes"]	= array("class"=>"page-link");

$CI->pagination->initialize($config);

이런 방식으로 사용하고 있습니다.

맨 밑에 attributes는 config파일에 넣어놓으면 리셋되어서 어쩔수 없이 하단에 추가 방식으로 넣어 놓은 것입니다.

저 attributes 부분을 config파일 넣고 싶은거구요.

여태까지 이 방법만 알고 있었어서.... 

어떻게 진행해야 하는지 올바른 방법을 알려주시면 감사하겠습니다.

변종원(웅파) / 2016/11/09 18:12:27 / 추천 0
지금 사용하시는게 일반적인 방식이구요. config파일에 넣으면 initialize가 필요없다는 말씀입니다.