CI 묻고 답하기

제목 ci 특정 디렉토리에 config 정보수정
글쓴이 내일은 작성시각 2012/03/15 14:43:01
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 20624   RSS
특정디렉토리에서 config 변수를 변경할수있게끔 수정을 하려고합니다.

config 파일에서 특정디렉토리를 체크해서 config 변수를 변경하는 방법을 생각해봤지만

왠지 땡기지 않습니다 --;

hook 을 사용해보려고하는데요 다른 방법으로 깔끔한? 처리가 가능하다면 굳이 hook 을 사용하지 않아도됩니다.

post_controller_constructor 포인트에서 사용하려고하니 config 가 이미로드되어 로드시에 이미 객체의 설정 변수가 변경이 되어있고

pre_controller 포인트에서 사용하려고 하니 CI 객체를 불러오기전이라서 접근하는 방법을 잘모르겠습니다.

고수님의 가르침을 애타게 기다립니다 ..




 다음글 웅파님 질문있어요. (2)
 이전글 codeigniter 는 DB Pool 같은게 없는 건... (11)

댓글

변종원(웅파) / 2012/03/15 14:59:53 / 추천 0
  http://cikorea.net/user_guide_2.1.0/general/creating_libraries.html 매뉴얼 참고하세요.

get_instance()
내일은 / 2012/03/15 15:20:52 / 추천 0
pre_controller 포인트 에서 get_instance() 를 해보았지만 널을 리턴해주더라구요 ;;

관리자 세션을 다른 쿠키네임으로 관리를 해서 회원로그인 기능을 관리자 페이지에 추가하려구 하고있어요.

관리자 세션 쿠키값을 별도로 생성해서 ...

유져 페이지의 경우 기본 설정을 가지고 가구 관리자에서는 세션 쿠키 네임을 별도로 지정을 하려구 하고있어요

config.php 파일에 직접적으로 분기를 주는게 뭔가 깨름찍해서 .

hook 을 이용하고 싶었어요.

config.php 파일의 직접분기를 제외한 오토 로드 이전단계에서 config 변수를 변경할수있는방법이 궁금했습니다 ㅠㅠ
변종원(웅파) / 2012/03/15 16:20:52 / 추천 0
  $CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');

매뉴얼 내용입니다.


hook에서 상수로 선언하여 사용하시는 것도 방법이구요.
내일은 / 2012/03/15 16:48:43 / 추천 0
답변 감사합니다..

메뉴얼내용
pre_controller

컨트롤러가 호출되기 직전입니다. 모든 기반클래스(base classes), 라우팅 그리고 보안점검이 완료된 상태입니다.

config/hooks.php 내용
$hook['
pre_controller'] = array(
    'class'    => '',
    'function' => '',
    'filename' => '',
    'filepath' => 'hooks'
);


적용 파일
    function index() {
        $CI =& get_instance();      

        var_dump($CI);                        // 결과 NULL
    }

메뉴얼내용
post_controller_constructor
컨트롤러가 인스턴스화 된 직후입니다.즉 사용준비가 완료된 상태가 되겠죠. 하지만, 인스턴스화 된후 메소드들이 호출되기 직전입니다.

post_controller_constructor 사용시

이미 session 클래스는 autoload 에의해서 인스턴스화. 이때 config
아이템을 변경해도 이미 로드상태로 기본적인 루틴을 거친후.


제가 뭔가를 잘못한걸까요 ㅠㅠ..
한대승(불의회상) / 2012/03/15 18:10:48 / 추천 0
특정 컨트롤러에서 config 파일을 수정하는 거라면 굳이 훅 까지 안써도 될거 같은데요.

그냥 

 fopen   으로 config 파일 open 한 후 수정된 값을 fwrite 하면 되지 않나요?
내일은 / 2012/03/15 18:26:23 / 추천 0
제가 말주변이없네요 ㅋ 디렉토리별로 세션 쿠키네임을 다르게 지정을 하고 싶었구요

fwrite 를 해주게 되면 디폴트 쿠키네임까지 바껴버려서 ..

일단은 config 파일에다가 분기 처리를 해서 처리했습니다 ..(제일하기싫던 방법)

아직도 모르는게 너무많군요 ...더 화이팅 해야겠습니다 ㅠㅠ
변종원(웅파) / 2012/03/15 18:37:01 / 추천 0
디렉토리명에 해당하는 쿠키네임을 자동을 처리하고 싶으셨던거죠?

디렉토리가 생길때마다 수작업으로 하는게 아닌..


내부함수 중에 현재 디렉토리를 지칭하는 함수가 있을겁니다. 그 함수를 통해 나온 변수를
쿠키명 선언 부분에 할당하면 됩니다.

아니면 주소중에서 첫번째 세그먼트가 디렉토리인지 검사해서 디렉토리이면 쿠키명에 할당하면 되구요.
변종원(웅파) / 2012/03/15 18:40:18 / 추천 0
그리고  var_dump($CI);   이거 찍어봐야 인스턴스 할당된 것이기때문에 소용이 없습니다.

ci내부에서 $this-> 를 대신하는 것입니다.

ci가 영향을 미치지 않는 곳(컨트롤러 로딩전, 다른 라이브러리 내부 등)에서 ci 내부 라이브러리를 사용하기 위해서 ci 인스턴스를 할당 받아서 처리를 하는거죠.