TIP게시판

제목 CI에서 contenttype별 view를 분리해보기
글쓴이 byung82 작성시각 2009/11/23 16:47:18
댓글 : 0 추천 : 0 스크랩 : 1 조회수 : 15201   RSS
extention class 만드는거에 탄력 붙여서 제가 필요도 해서 만들어 봅니다.
AJAX를 하다보면 json, xml, 기타등등 별로 랜더링 view를 변경해야 하는데 이게 여간 귀잖습니다.
ruby framework중 merb란 놈이 contenttype별 랜더링 view를 설정해주는게 좋아서 비슷하게 만들어봤습니다.
주의하실점연 accept를 보내주실때 꼭 첫번째에 원하는 contenttype이 있어야 합니다.

MY_Loader.php로 만들어서 아래 코드를 넣어주신후 application/libraries에 넣어주시면 됩니다.
class MY_Loader extends CI_Loader
{
        function view($view, $vars = array(), $return = FALSE)
        {
                $accept = isset($_SERVER["HTTP_ACCEPT"]) ? $_SERVER["HTTP_ACCEPT"] : "text/html";
                $accept = split( ",", $accept );

                switch($accept[0])
                {
                        case "application/json":
                                $view = "{$view}_json".EXT;
                                break;
                        case "application/xml":
                                $view = "{$view}_xml".EXT;
                                break;
                }

                return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
        }
}
 이렇게 하면

json을 호출하면 view이름_json.php를 호출하게 됩니다.

그럼
 다음글 CI에서 오라클 AR사용시 버그 수정 (1)
 이전글 CI에서 AJAX를 쉽게 사용해보기 (4)

댓글

없음