CI 묻고 답하기

제목 [초보]라우팅에 관하여~
글쓴이 헛발이 작성시각 2011/06/17 12:07:55
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 24506   RSS
바로 질문입니다..

현재 HMVC를 사용중인데요...

보통 예를 들어서 notice라는 모듈이 있을 경우 실제 notice로 접속은 못하게 하고
자기가 정한 라우팅으로만 접속이 되게 하고 싶었습니다.

그래서 APP의 config에 라우팅파일에
//여기로는 접속을 못하게 막고
$route['notice'] = '';

//여기로만 접속이 되게
$route['news'] = 'notice';
하면 동작을 하긴 하는데요.. 이렇게 되면 APP의 라우팅파일에 엄청 많은 라우팅을 하게 될거 같아서

모듈의 config폴더를 만들어서 라우팅파일을 그쪽에서만 관리 하고 싶었어요..

즉 /modules/notice/config/routes 에다가
//여기로는 접속을 못하게 막고
$route['notice'] = '';

//여기로만 접속이 되게
$route['news'] = 'notice';
이렇게요...

그런데 APP의 라우팅에 하면 적용이 되는데
모듈의 라우팅에 하면 동작이 둘다 라우팅이 되질 않네요...

그래서

APP의 라우팅에
$handle = opendir(SET_MODULES_ROOT);
if ($handle)
{
    while ( false !== ($module = readdir($handle)) )
    {
        if (substr($module, 0, 1) != ".")
        {
            if ( file_exists(SET_MODULES_ROOT . $module . '/config/routes.php') )
            {
                include(SET_MODULES_ROOT . $module . '/config/routes.php');
            }
        }
    }
}
이런 형식으로 해서 APP에서 직접 작성한것처럼 해 봤는데도 마찮가지더라구요..

제가 원하는
//여기로는 접속을 못하게 막고
$route['notice'] = '';

//여기로만 접속이 되게
$route['news'] = 'notice';
를 구현할 수 있는 방법이 없을까요?
 다음글 오랜만에 질문 하나요..상수 정의에 대해... (6)
 이전글 select해서 뿌려주기~ 관해 여쭙니다 (6)

댓글

변종원(웅파) / 2011/06/17 23:05:46 / 추천 0

라우트 사용보다는 private 함수로 처리하는건 어떨까요?

class News extends CI_Controller {

   function index(){
     //news 일 경우 처리
     $this->_notice();
   }

   function _notice(){
     //처리
   }
}

헛발이 / 2011/06/18 11:35:08 / 추천 0
혹시 다른 방법은 없을까요?
위처럼 하면 제가 원하는거랑 맞지 않는거 같은데요...

class Notice extends CI_Controller {

   function index(){
      //처리
   }

}
가 원래 있는 상태인데... 라우팅을 사용하던 다른 방법을 사용하던 제가 원하는것은

URL로 접속했을때 모듈에 있으니 당연히

http://test.com/notice 라고 접속이 되잖아요~

그런데.. 원하는것이..

http://test.com/notice 로는 접속이 불가능하게 하고...

제가 라우팅을
$route['news/(:any)'] = "notice/$1"
$route['suda/(:any)'] = "notice/$1"
$route['test/(:any)'] = "notice/$1"
이렇게 하면

http://test.com/news 가 접속이 되고
http://test.com/suda 가 접속이 되고
http://test.com/test 가 접속이 되고

이렇게 하고 싶거든요..

라우팅을 하는것은 어려운일이 아니지만

잘 안되는것이 원래 모듈명으로 접속을 못하게 하는게 잘 안되요...

ㅡ.ㅡ;;

한대승(불의회상) / 2011/06/21 16:38:11 / 추천 0
컨트롤러는 배제하고 반드시 라우팅에서만 해야 하나요?
컨트롤러에서 제어한다면 인수가 안 넘어오면 뭔가 해주면 될거 같은데.. ^^