CI4 Playground v4.7.3
한국어문서
1
기본 라우팅 — GET / POST

가장 기본적인 형태로, HTTP 메서드와 URL을 컨트롤러 메서드에 매핑합니다.

app/Config/Routes.php
// GET 요청: 홈 페이지
$routes->get('/', 'Home::index');

// POST 요청: 데이터 저장
$routes->post('examples/controllers/store', 'Examples\Controllers::store');

// GET + POST 동시 처리
$routes->match(['get', 'post'], 'examples/routing/method', 'Examples\Routing::method');
2
URL 파라미터

URL에서 값을 추출해 컨트롤러에 전달합니다. (:num), (:alpha), (:segment) 등의 플레이스홀더를 사용합니다.

app/Config/Routes.php
// (:num)  — 숫자만 허용
$routes->get('examples/routing/params/(:num)', 'Examples\Routing::params/$1');

// (:alpha) — 영문자만 허용
// (:alphanum) — 영문자+숫자
// (:segment) — / 를 제외한 모든 문자
// (:any) — 모든 문자 (슬래시 포함)
app/Controllers/Examples/Routing.php
public function params(int $id): string
{
    return view('examples/routing/params', ['id' => $id]);
}
3
Named Route (이름 있는 라우트)

라우트에 이름을 붙이면 URL이 변경되어도 코드를 수정할 필요 없이 route_to()로 URL을 생성할 수 있습니다.

app/Config/Routes.php
$routes->get('examples/routing/named', 'Examples\Routing::named', ['as' => 'routing.named']);
컨트롤러 / 뷰에서 사용
// 컨트롤러에서
$url = route_to('routing.named'); // → /examples/routing/named

// 뷰에서
echo anchor(route_to('routing.named'), '이동하기');
4
라우트 그룹

관련된 라우트를 그룹으로 묶어 공통 접두사, 네임스페이스, 필터를 한 번에 적용할 수 있습니다.

app/Config/Routes.php
// 이 프로젝트의 모든 예제 라우트는 'examples' 그룹으로 관리됩니다
$routes->group('examples', ['namespace' => 'App\Controllers\Examples'], function ($routes) {
    $routes->get('routing', 'Routing::index');
    $routes->get('controllers', 'Controllers::index');
    $routes->get('models', 'Models::index');
    // ...
});

// 필터 적용 예시
$routes->group('admin', ['filter' => 'auth'], function ($routes) {
    $routes->get('dashboard', 'Admin::dashboard');
    $routes->get('users', 'Admin::users');
});
이 프로젝트 전체 라우트examples 그룹으로 구성되어 있습니다. 소스코드에서 app/Config/Routes.php를 확인하세요.
5
리다이렉트

컨트롤러에서 다른 URL로 리다이렉트하거나, 라우트 자체에 리다이렉트를 설정할 수 있습니다.

컨트롤러에서 리다이렉트
// URL로 리다이렉트
return redirect()->to(base_url('examples/routing/redirected'));

// Named Route로 리다이렉트
return redirect()->route('routing.named');

// 이전 페이지로 돌아가기
return redirect()->back()->with('message', '처리 완료!');

// 라우트 설정에서 바로 리다이렉트
$routes->addRedirect('old-path', 'new-path', 301);