CI 코드

제목 [응용] 일반페이지 관리자 페이지 분리하기
글쓴이 ci세상 작성시각 2009/10/20 11:23:29
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 22462   RSS

일반페이지와 관리자페이지를 구분해서 만들려고 합니다.

=> 질문글중에서 : http://codeigniter-kr.org/qna/view/1246/page/1 (헛발이님)

[일반페이지들]
http://www.test.com/news/
http://www.test.com/color/
http://www.test.com/size/

[관리자페이지들]
http://www.test.com/admin/color/
http://www.test.com/admin/size/

이렇게 일반페이지는 도메인 밑에 두고 관리자페이지는 admin밑에 두고 싶은데요..
CI에서 어떻게 처리 해야 하는지 알고 싶습니다...

그리고 http://www.test.com/ 으로 접속하면 바로 http://www.test.com/news/ 로 이동하고 싶고
http://www.test.com/admin/ 으로 접속하면 http://www.test.com/admin/color/ 로 이동하고 싶은데 어떻게 해야 하는지..




######### 답변 ##########

matchbox 를 이용해서 위 내용 구현
http://codeigniter-kr.org/source/view/161/page/1/q/matchbox


첨부파일 전체소스 참조해 주시면 됩니다.

첨부파일 user_admin.zip (406.5 KB)
 다음글 [예제] remap이용 frame 구성하기
 이전글 FTP 라이브러리에는 다운로드 메소드가 없다.. 왜? (1)

댓글

헛발이 / 2009/10/20 11:54:06 / 추천 0
감사합니다...
설치 해서 체험해 봤는데... 잘 되네요... ^^;
헛발이 / 2009/10/20 12:40:03 / 추천 0
아 근데요... View파일들은 어디에 만들어야 하나요? ㅡ.ㅡ;;
ci세상 / 2009/10/20 12:43:09 / 추천 0
모듈폴더안에 만드시면 됩니다. ^^ view 파일 사용시에도 좀 틀리니 아래 문서를 참조해 보세요

http://codeigniter-kr.org/source/view/161/page/1/q/matchbox


6. 컨트롤러에서 views 파일 호출과 값담기
헛발이 / 2009/10/20 13:08:27 / 추천 0
감사합니다... ci세상님께서 알려 주셔서 이제 첫걸음 띱니다... ^^;
근데... 관련글을 읽어 보니... matchbox에 관하여 다들 회의적인거 같은데...
쭉~ 사용해도 괜찮을까요? ^^;;
ci세상 / 2009/10/20 13:19:44 / 추천 0
matchbox 배포소스의 핵심이 라우터를 이용해서 폴더를 다른곳에서 사용할 수 있게 해둔 개념이라서 크게 무리는 없을것 같습니다. 대형 프로젝트라면 모듈별로 개발을 많이 하다보니 matchbox 를 쓸 수 밖에 없는것 같습니다. 작은 사이트라면 안써도 괜찮다고 생각합니다.^^
헛발이 / 2009/10/20 14:00:41 / 추천 0
친절한 답변 감사합니다...
다음에도 좋은 가르침 부탁드립니다..
벨리 / 2009/10/21 11:44:50 / 추천 0
ci세상 // 감사합니다. 아직도 개념이해가 안돼서 헤매고 있었는데 조금씩 정립이 됩니다~~^^

올려주신 소스로 테스트해봤는데요.. 혹시나 해서 .. 다음과 같이 추가를 해봤습니다.


modules > admin > controllers > color > red > red.php
<?php

class Red extends Controller {

	function Red()
	{
		parent::Controller();	
	}
	
	function index()
	{
		echo "admin > color > red 폴더";
	}
}
controllers 하위폴더 구현 하는 방법을 적용해봤습니다.
http://codeigniter-kr.org/source/view/241/page/1  <참조>

MY_Router.php 파일을 system/application/libraries/MY_Router.php 에 저장했습니다.

http://www.test.com/admin/color/red 

이렇게 접속하니 페이지를 찾지를 못하네요..

ci세상 / 2009/10/21 15:11:19 / 추천 0
참조하신 확장은 matchbox가 없을때 사용하는 방식이구요.. matchbox일때에는 application/libraries/Router.php 대체 파일을 따라가게 됩니다.

위 폴더처럼 가면 세그먼트가 총 3개라서 아래와 같이 Router.php에 코드를 추가하시면 됩니다.

    function _validate_request($segments)
    {
        // {{{ Matchbox

        foreach($this->_matchbox->directory_array() as $directory) {


		    // ci세상 추가코드 - 세그머트 3개일때
            if (count($segments) > 2 && file_exists(APPPATH . $directory . '/' . $segments[0] . '/controllers/' . $segments[1] . '/' .  $segments[2] . '/' . $segments[2] . EXT)) {
                $this->_matchbox->set_directory($directory);
                $this->_matchbox->set_module($segments[1]);
                $this->set_directory($segments[2]);

                $segments = array_slice($segments, 2);

                return $segments;
            }