쿼리 실행 코드 뒤에 아래 코드를 입력하면 화면에
찍힌다~!!
$last_query = $this->db->last_query();
echo $last_query;
'PHP' 카테고리의 다른 글
Codeigniter Hooks 사용방법! (0) | 2021.01.28 |
---|
쿼리 실행 코드 뒤에 아래 코드를 입력하면 화면에
찍힌다~!!
$last_query = $this->db->last_query();
echo $last_query;
Codeigniter Hooks 사용방법! (0) | 2021.01.28 |
---|
uri로 영문, 국문 페이지를 구분하는 사이트를 운영하게 되었다..
(controller 자체가 국문용, 영문용 따로 생성되어있는.. )
이렇게 되어있다보니 요청한 url에 따라 영/국문 페이지는 잘 나오지만
페이지내 locale 설정값을 통해 나오는 문자와 이미지가 제대로 나오지 않는 이슈가 있었다~
예) 로케일이 국문으로 되어있는데 영문 url를 치고 들어오면 국문용 이미지가 출력됨.. ;;
애초에 로케일 값만 가지고 구축했으면 좋았겠지만 안되어있으니 아쉬운대로 나는 작업을 이어간다.
예전엔 이런걸 보면 왜이렇게 해두는거지??? 했지만 이젠 다 사정이 있겠거니 하는 마음이 든다..ㅎㅎ; 왜지?
무튼
hook으로 controller 들어가기 전에 uri 값을 읽어와서 locale 설정을 변경해주는 방향으로 작업하려고 한다.
시작!
1. application/config/config.php 에 들어가서 아래값을 true로 설정한다. hooks 활성화 해주는거~
$config['enable_hooks'] = true;
2. application/config/hooks.php 사용할 hooks 선언을 해준다.
$hook['post_controller_constructor'] = array(
'class' => 'Locale_init', // 클래스명, 그냥 파일명이라고 생각해도 될듯
'function' => 'inits', // 그안에 내가 쓸 함수명
'filename' => 'Locale_init.php', // 실제 파일명
'filepath' => 'hooks' // 저장된 경로이니 특별하지 않다면 그냥 두기
);
$hook[''] 에 들어가는 값은 여러가지 타입이 있는데 내 사용용도에 맞게 적어주면 된다.
나는 컨트롤러가 인스턴스화 된 직후 진행하려고 post_controller_constructor로 설정했다.
pre_system
- 시스템 작동초기입니다.벤치마크와 후킹클래스들만 로드된 상태로서, 라우팅을 비롯한 어떤 다른 프로세스도 진행되지않은 상태.
pre_controller
- 컨트롤러가 호출되기 직전. 모든 기반클래스(base classes), 라우팅 그리고 보안점검이 완료된 상태.
post_controller_constructor
- 컨트롤러가 인스턴스화 된 직후. 사용준비가 완료된 상태. 하지만, 인스턴스화 된 후 메소드들이 호출되기 직전.
post_controller
- 컨트롤러가 완전히 수행된 직후.
display_override
- _display() 함수를 재정의. 최종적으로 브라우저에 페이지를 전송할 때 사용됩니다. 이로서 당신만의 표시 방법( display methodology)을사용할 수 있음.
주의 : CI 부모객체(superobject)를 $this->CI =& get_instance() 로 호출하여 사용한 후에 최종데이터 작성은 $this->CI->output->get_output() 함수를 호출하여 할 수 있음
cache_override
- 출력라이브러리(Output Library) 에 있는 _display_cache() 함수 대신 당신의 스크립트를 호출할 수 있도록 해줌.
이로서 당신만의 캐시 표시 메커니즘(cache display mechanism)을 적용할 수 있음
post_system
- 최종 렌더링 페이지가 브라우저로 보내진후에 호출
3. application/config/configLocale_init.php
파일을 생성하고 원하는 작업을 코딩한다.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Locale_init {
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
}
}
public function inits(){
$CI =& get_instance();
$CI->load->library('session');
$uri= $_SERVER['REQUEST_URI']; //uri를 구합니다.
$pieces = explode('/', $uri);
if(isset( $pieces ) && count($pieces) > 1) {
$this->CI->session->set_userdata("__ss_lan", $pieces[1] );
$lan = $this->CI->session->userdata("__ss_lan");
}
}
}
이제 실행해보면 잘된당~~
* 저는 php 개발자는 아니지만.. 임시적으로 운영중이니 코드에 이슈가 있다면 코멘트 남겨주세요!
배우는 것을 좋아합니다~~~!!
PHP Codeigniter 쿼리 찍어보기 (0) | 2021.02.22 |
---|