TIP게시판

제목 디비로 동적 라우팅 구성하기.
글쓴이 방문넷 작성시각 2014/08/23 18:45:19
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15305   RSS
routes.php를 자주쓰는 저로썬 매번 파일들어가서 고치기 구찮았는데 검색하다보니 좋은 팁이 있어서 공유코자합니다.

원문 : http://osvaldas.info/smart-database-driven-routing-in-codeigniter.

영어 울렁증이 있으신분들을 위해 바로 실전 투입을 하겠습니다~저도 영어 울렁증이지만 코드만봐도 올커니! 들 하실껍니다

일단 테이블을 생성해주세요~
 
CREATE TABLE `routes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `slug` varchar(255) NOT NULL,
  `controller` varchar(255) NOT NULL
  PRIMARY KEY (`id`),
  UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

테이블을 생성후에 config/routes.php 파일을 손봐줍니당~ 아래의 코드를 입력해주세용
 
$route['default_controller'] = "main/welcome";
$route['404_override'] = '';

require_once (BASEPATH."database/DB".EXT);

$db =& DB();
$query = $db->get('routes');
$result = $query->result();

foreach($result as $row):
    $route[ $row->slug ]                 = $row->controller;
    $route[ $row->slug.'/:any' ]         = $row->controller."/$1";
endforeach;

자 참 쉽죠! 이제 사용법을 알려드리겠습니다.

http://도메인/폴더/컨트롤러/메쏘드

간혹 코딩하시다보면 URI가 길어질수있는데 위에 예시로 적어둔 주소를 

http://도메인/내가만든거

으로 라우팅 할려면 아까 만든 테이블에 내용을 입력해줍니다

slug -> 내가만든거
controller -> 폴더/컨트롤러/메쏘드

자 이제 브라우저를 열고

http://도메인/내가만든거

형식으로 입력하시면 라우트가 잘되는걸 보실수있습니다.

HMVC사용하시는분들도 적용가능합니다.


이상 검색질을 통해서 얻어걸린 내용을 팁으로 올린 방문넷 물러나겠사옵니다~
 다음글 다국어를 디비와 파일 혼용으로 쓰기. (2)
 이전글 php로 currying 구현 하기 (3)

댓글

한대승(불의회상) / 2014/08/25 09:02:47 / 추천 0
오.. 이제 라우팅을 관리할 관리자 프로그램만 만들면 되겠습니다.
좋은 정보 감사 합니다. 
darkninja / 2014/08/25 12:08:16 / 추천 0
routes.php 나 config.php 는
페이지가 열릴때 마다 불러오나요?

config.php 에서 변할수 있는 상수를 읽어 들여서
설정하여 사용하면 좋을거 같은데
페이지마다 부하가 걸린다면 좀 그렇네요...
한번만 읽어 들이게 설정한다면
좋은 방법이 될 수 있겠습니다.
변종원(웅파) / 2014/08/25 13:39:04 / 추천 0
darkninja / 2014/08/25 19:32:44 / 추천 0
조금씩 이해가 됩니다.
아직 적용할 만큼 코드가 정리가 안되서 수시로 갈아엎는 위기가 와서 ㅋ
필요해지면 감사히 써 먹겠습니다.
 
방문넷 / 2014/08/25 20:13:48 / 추천 0
@불의회상 // 으흐흐.. require.js 라우팅 을 구글링 하다가 얻어걸린건데 괜찮은 방법이어서 냅다 가져왔습니다 ㅎㅎ
@darkninja // 웅파님께서 링크걸어주신 흐름을 보면 route 는 무조건거치게 되어 있습니당. 나중에 쓸모있을때 언제든지 가져다 쓰시면됩니다 ^^