xpressengine/xe-core — pull request #354 by smaker (2014-01-21 07:37:44+00:00)
Title: 라우터 기능 추가

router 클래스를 추가하여 동적으로 rewrite rule을 추가할 수 있도록 수정했습니다.

module trigger나 애드온에서 rewrite rule을 추가할 수 있습니다.

ModuleHandler가 실행되기 전에 호출되기 때문에, 새로운 xml 스펙은 추가하지 않았습니다.

사용법은 아래와 같습니다.

애드온

add('([a-zA-Z0-9_]+)/write', array('mid' => '$1', 'act', 'dispBoardWrite'));
}
?>

모듈

모듈에서 사용 시 트리거 등록
$oModuleController->insertTrigger('router.init', 'test', 'controller', 'triggerRouterTest', 'before');

controller에서 rewrite rule 추가
add('([a-zA-Z0-9_]+)/write', array('mid' => '$1', 'act', 'dispBoardWrite'));

$mid = Context::get('mid');
$act = Context::get('act');
$is_feed = ($act == 'rss' || $act == 'atom') ? TRUE : FALSE;

// Context::getUrl()에서 mid/write 형식의 URL을 생성할 수 있도록 map 추가
if($is_feed)
{
$oRouter->setMap('act.mid', "$mid/$act");
}
else
{
$oRouter->setMap('act.mid', ($act == 'dispBoardWrite') ? "$mid/write" : '');
}
}
}