질문 Q #9012
[초보]라우팅 질문
헛발이 2010-06-17 11:16:43
질문 드립니다.. 잘 부탁드립니다..
하고 싶은것은..

URL로 봤을때..

도메인.com/account/login/ 이렇게 하면 일반 사용자의 로그인 화면으로 하고 싶고...
도메인.com/admin/account/login/ 이렇게 하면 관리자의 로그인 화면으로 하고 싶고...

즉 관리자도 로그인 관련 부분이 있고 일반인도 로그인 관련이 있는것이죠..

그러면 ci의 구조는 어떻게 만드는게 좋은가요? 그리고 라우팅은 어떻게 해야 할지 잘 모르겠어요...

이렇게는 생각해 봤는데요...

modules
        ./account
                ./controller
                       ./admin
                               ./account.php   <-관리자용 로그인처리 콘트롤러
                       ./account.php  <-일반인용 로그인처리부분 콘트롤러

이렇게 하고 라우팅을

$route['account/(:any)'] = 'account/$1';
$route['admin/account/(:any)'] = 'account/admin/account/$1';

이렇게 하면 되지 않을까 햇는데...잘 안되네요 .. ㅋㅋ
이렇게 하면 안되는건가요?



답변 6
#1 변종원(웅파) 2010-06-17 14:31:00
작성하신 개념은 맞는데 모듈러가 서브디렉토리도 인식하나요? (모듈러는 제가 안써봐서..)

도메인.com/admin/account/login/  (account/admin/account) 이게 작동하는지요?

도메인.com/account/admin/account 가 작동안하면 라우팅해도 소용없습니다.
#2 헛발이 2010-06-17 14:44:02
그니깐요...

modules
        ./account
                ./controller
                       ./admin
                               ./account.php   <-관리자용 로그인처리 콘트롤러
                       ./account.php  <-일반인용 로그인처리부분 콘트롤러

이렇게 만들고..

$route['account/(:any)'] = 'account/$1';
$route['admin/account/(:any)'] = 'account/admin/$1';

라우팅을 이렇게 하고 ...URL에서

도메인.com/account 는 되요....
도메인.com/admin/account 는 안되요..
도메인.com/admin/account/account 는 돼요...

근데 하고 싶은건...
도메인.com/account  와
도메인.com/admin/account  이건데요..

ㅡ.ㅡ;;

#3 변종원(웅파) 2010-06-17 15:39:45
도메인.com/admin/account 는 당연히 안되죠. ^^

$route['admin/account/(:any)'] = 'account/admin/$1'; 이 규칙에 의하면

도메인.com/admin/account ->  'account/admin/' 여기에 매칭됩니다.
디폴트 컨트롤러를 넣어놓으시면 되겠네요. ^^
#4 헛발이 2010-06-17 17:37:57
근데 이해가 좀 안가는게 있는데요...

$route['admin/account/(:any)'] = 'account/admin/account/$1';

를 해도 매칭이 안되요...

URL에서 직접

도메인.com/account/admin/account/ 하면 매칭이 되는데요...

저 같은 경우는 항상 사용자화면과 관리자 화면이 항상 셋트로 붙어 다니는데..
모듈을 사용할 경우 사용자부분과 관리자 부분을 한 셋트로 만들 수 없을까요?


그냥

Modules
    /account
        /controller
        /models
        /views
    /account_admin
        /controller
        /models
        /views


$route['account/(:any)'] = 'account/$1';
$route['admin/account/(:any)'] = 'account_admin/$1';

이렇게 만드는게 나을까요?
#5 byung82 2010-06-17 18:49:21
 (:any) 로 설정을 하면 / 다음에 필히 한단어라도 있을경우만 
맵핑이 됩니다.
defualt로 하나 걸어두셔야 합니다.

이럴때는 ruby의 merb route가 참좋다고 느낍니다 ^^;
#6 주스 2010-10-08 16:06:41
 맞는지 모르겠지만

저는 메뉴얼 나온대로 사용 합니다 -_-;

\app\controllers\administrator\ 

라우터 설정

$route['administrator/([a-z]+)/(\d+)'] = "$1/$2";
 
http://도메인/administartor/user/login

컨트롤 파일은 \app\controllers\administrator\user.php  엑세스

user.php 파일 내용중  login 함수를 호출 합니다