제목 | hook 사용시 이해가 잘 안되는 점이 있어 문의 드립니다. | ||
---|---|---|---|
글쓴이 | 마카오최 | 작성시각 | 2016/02/11 16:38:50 |
|
|||
우선 포럼 리뉴얼 축하드립니다 ~ ^^ 메뉴도 스무스?하게 나오고 뭔가 점점 고급져 가는 느낌이네요 ~ ㅎㅎ
http://www.ciboard.co.kr/user_guide/kr/general/hooks.html 메뉴얼을 참고하여 테스트 중.. hook을 사용하여 웹페이지를 보여주기전에 실행되야할 검사들을 처리후 보여주려고 하는데요... /application/config/hooks.php 에는 아래와 같이 셋팅하였습니다. $hook['post_controller_constructor'] = array( 'class' => 'System_config', 'function' => 'index', 'filename' => 'System_config.php', 'filepath' => 'hooks', 'params' => array("") );
/application/hooks/System_config.php 에는 아래와 같이 작성하였습니다. <?php defined('BASEPATH') OR exit('No direct script access allowed'); class System_config extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('setting_m'); //$CI =& get_instance(); //$CI->load->model('setting_m'); } public function index() { $this->set_config(); } function set_config() { $data = $this->setting_m->get_row($data); //$data = $CI->setting_m->get_row($data); $result = var_dump($data); return $result; } } 우선 여기까지 코드 작성을 하여 일단 디비에 저장된 로우를 제데로 가져오나 확인하려고 하는데 실행을 시키니 Unable to locate the specified class: Session.php 이런 오류메세지가 나옵니다.. 원래 훅을 사용하면 훅내부에서는 load 등 ci_controller 내부 함수들을 사용할수 없는건가요? 코드내에 주석처리한것처럼 $CI 로 인스턴스화 시킨 상태로 접근하려고 해도 같은 에러가 나네요.. 아니면 혹시 hook사용시 사용자정의 클래스를 ci_controller를 확장해서 사용하는것은 원래 안되는 것인가요?
검색을 해보니 해당오류메세지에 대한 조치사항들이 보여 1. $autoload['drivers'] = array('session'); $autoload['libraries']에서 session을 빼고 드라이버 항목에 추가하였구요.
2. config.php 내의 Session Variables 설정은 아래와 같습니다. (변동없이 그대로 가고있습니다) $config['sess_driver'] = 'database'; $config['sess_cookie_name'] = TBL_CI_SESSION; $config['sess_expiration'] = 7200; $config['sess_save_path'] = TBL_CI_SESSION;//테이블이름 $config['sess_match_ip'] = TRUE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = TRUE;
ci 버젼 3.04 php 버젼은 5.3 입니다. 버젼 문젠가 싶어 카페24 php7 웹호스팅 환경에도 동일 소스로 테스트해봤는데 똑같은 에러가 납니다..
훅을 사용하지 않고 원하는 기능을 함수로 만들어 매 클래스의 리맵등의 위치시키는것도 생각해봤지만 hook을 사용하면 뭔가 한번에 전처리과정을 일괄적으로 할수 있겠다 싶어 메뉴얼 보고 따라하는중 잘 안되서 질문 드립니다.. |
|||
다음글 | url_helper 의 auto_link() | ||
이전글 | 크롬, ie 를 두개의 브라우저를 열면 응답이 없습니다... (3) | ||
kaido
/
2016/02/11 17:02:24 /
추천
1
|
마카오최
/
2016/02/11 17:43:58 /
추천
0
$this->CI =& get_instance(); // 선언하는것과 if(!isset($this->CI->session)){ // 세션라이브러리 로드 유무를 확인하여 로드시키는 것
kaido 님 빠른답변 감사합니다 ^^ 알려주신 코드로 적용하니 바로 되네요. ~! 잘 사용하겠습니다~!!. ^^
class System_config extends CI_Controller { private $CI; function __construct() { $this->CI =& get_instance(); if(!isset($this->CI->session)){ //Check if session lib is loaded or not $this->CI->load->library('session'); //If not loaded, then load it here } $this->CI->load->model('setting_m'); } public function index() { $this->set_config(); } function set_config() { $data = $this->CI->setting_m->get_row($data); $result = var_dump($data); return $result; } }
|