CI 묻고 답하기

제목 config에서 db접속을 할수 있을까요?
카테고리 CI 2, 3
글쓴이 니로 작성시각 2016/12/12 09:38:58
댓글 : 15 추천 : 0 스크랩 : 1 조회수 : 21728   RSS

현재 폴더 구조가

application

sys_config

webroot

 

이렇게 큰 분류로 되어있고

 

application/config/shop이라는 파일안에서 sys_config안에있는 shop에 설정값들을 include해서 사용중입니다.

 

sys_config/shop 내용중에 config['layout]이 있는데 이 세팅값으로 컨트롤러에서 view호출시 레이아웃경로를 불러와 주는건데..

이값을 db에 저장된 값으로 부여해줘야합니다. 컨트롤러에서 세팅을 하려했으나.. 컨트롤러 조차도 세팅값으로 호출되고 있습니다.

ex) $config['layout']        = 'layouts/default'; 

    

 

 

이렇게해서 컨트롤러에서는 $this->config->item('값');  이런식으로 다 불러와서 사용중인데요

 

sys_config/shop에 있는 설정값들을 이제 db에 저장된 값으로 불러와서 세팅을 해야하는데..

 

어떻게 방법이 있을까요? (..)('')(..)

 

hook에서 db접속해서 처리를 하려니 접속도 안되고.. config값 세팅도 안될거같고..해서요..

 다음글 session 동작 과정/원리 (1)
 이전글 Ajax comment 입력시 코멘트 추가 (4)

댓글

변종원(웅파) / 2016/12/12 10:02:58 / 추천 0

hook에서 db 접속 됩니다. 매뉴얼에서 instance 검색해보세요.

hook에서 db 값을 가져와서 상수로 선언하시면 됩니다.

배강민 / 2016/12/12 10:35:26 / 추천 0

core를 확장해서 그안에서 정의하셔도 됩니다.

니로 / 2016/12/12 10:53:48 / 추천 0

hook에서         

$data = $this->CI->db->get('EPS_MAIN_SKIN')->row_array();
        
define("MAIN_SKIN",$data['MAIN_SKIN_URL']); //상수선언 이거 말씀하시는거죠?

이렇게 했는데

hook에서는 echo MAIN_SKIN하면 db값이 찍히는데

컨트롤에서 echo MAIN_SKIN을 찍으면 그냥 MAIN_SKIN이 찍히는데.. 제가 머 잘못한건가요 ㅠ

 

혹시 hook에서 상수 선언해놓은거 config에서는 못불러오죠?

kaido / 2016/12/12 10:59:29 / 추천 0

hook 으로 한다면 컨트롤러가 불러오기 전인지 불러오기 후인지 확인해서 넣어봐야 할것 같습니다.

니로 / 2016/12/12 11:07:50 / 추천 0
hook이 컨트롤보다 늦다면 어떻게 해야하죠...
kaido / 2016/12/12 12:04:35 / 추천 0

http://www.ciboard.co.kr/user_guide/kr/general/hooks.html

참고하여 보세요.

  • post_controller 컨트롤러가 완전히 수행된 직후입니다.
니로 / 2016/12/12 13:11:39 / 추천 0

그.. 현재 hook에도

$hook['post_controller'] = array(
                                             'class'    => 'Permission',
                                             'function' => 'session_check',
                                             'filename' => 'permission.php',
                                             'filepath' => 'hooks',
                                             'params'   => array()
                                            );

 

이렇게.. 되어있는데 컨트롤에서 상수 echo로 찍으면 안나오는데 뭐가문제일까요...

변종원(웅파) / 2016/12/12 13:54:23 / 추천 0

컨트롤러 수행직후라면 실행이 끝난 시점이니 당연히 안나오는게 맞죠.

pre_controller나 post_controller_constructor를 써야합니다.

니로 / 2016/12/12 15:13:05 / 추천 0

post_controller_constructor 쓰니 제대로 생성은 됫는데요 혹시 config에서 db값을 config변수로 세팅시켜줄수는 없을까요?

변종원(웅파) / 2016/12/12 17:13:34 / 추천 0

instance 선언해서 해보세요. ^^;

예전 라이브러리중에 config를 db에 저장해주는 게 있었습니다. 가능하다는 소리겠죠.

니로 / 2016/12/14 10:15:29 / 추천 0

config에서 db연결하는걸 도저히 시도를해봐도 모르겟어요..

@include DB_DIR.".inc"; //db연결정보있음

$this->CI =& get_instance();
                          
$db['default']['hostname'] = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ".$host.")(PORT = 1521)))(CONNECT_DATA =(SID = ORCL)(SERVICE_NAME = ORCL)))";
$db['default']['username'] = (!$mode) ? exec('/usr/local/src/crypt/entin_crypt DECODE ID ' . $id) : $id;
$db['default']['password'] = (!$mode) ? exec('/usr/local/src/crypt/entin_crypt DECODE ID ' . $pass) : $pass;
$db['default']['database'] = "";
$db['default']['dbdriver'] = "oci8";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf-8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
$test = $this->CI->load->database($db);

 

이렇게 해서 연결 하는게 아닌건가요..?

변종원(웅파) / 2016/12/14 13:22:53 / 추천 0

database.php 에서 해당 부분 바꿔서 쓰시면 되는데요? 

여러 개의 연결에서 조건에 따라 연결하는 것도 거기서 처리하면 되구요.

니로 / 2016/12/14 13:24:29 / 추천 0

database.php에서 연결하는건 하는거고..  config/shop.php라는데서 데이터를 검색해서 긁어 오고싶은데

 

shop.php에서는 $this->CI =& getinstance(); 를해서

$this->CI->db->get()~~~~~

머이런식으로 해도 안되더라구요 ;

 

방법을 어떻게 해야할지몰라서..

변종원(웅파) / 2016/12/14 15:20:42 / 추천 0
단순히 db 접속하는거면 굳이 ci 내부 자원을 쓰지않고 그냥 mysqli_connect 써서 해보세요
니로 / 2016/12/15 09:26:00 / 추천 0
#변종원(웅파) 결국~ 그방법 뿐인거였군요! 감사합니다