CodeIgniter 컨트롤러, 뷰 라우팅: 예제 앱으로 알아보기

이 튜토리얼에서는 다음 주제에 대해 배우게 됩니다.

  • 라우팅 – 라우팅은 URL 요청에 대한 응답을 담당합니다. 라우팅은 URL을 미리 정의된 경로와 일치시킵니다. 일치하는 경로가 없으면 CodeIgniter는 예외를 찾을 수 없는 페이지를 발생시킵니다.
  • 컨트롤러 – 경로는 컨트롤러에 연결됩니다. 컨트롤러는 모델과 뷰를 함께 연결합니다. 모델의 데이터/비즈니스 로직을 요청하고 뷰 프레젠테이션에 결과를 반환합니다. URL이 경로와 일치하면 컨트롤러의 공개 기능으로 전달됩니다. 이 함수는 데이터 소스, 비즈니스 로직과 상호 작용하고 결과를 표시하는 뷰를 반환합니다.
  • 조회수 – 뷰는 프리젠테이션을 담당합니다. 뷰는 일반적으로 HTML, CSS 및 Java스크립트. 이 부분은 사용자에게 웹 페이지를 표시하는 역할을 합니다. 일반적으로 표시되는 데이터는 데이터베이스나 다른 사용 가능한 데이터 소스에서 검색됩니다.

새로운 CodeIgniter 프로젝트를 생성하는 방법

Composer를 사용하여 새 프로젝트를 만들 것입니다. PHP 내장 서버를 사용하므로 다음과 같은 추가 소프트웨어가 필요하지 않습니다. 아파치. 이 튜토리얼에서는 Windows 운영 체제. 따라서 드라이브 C에 Sites 폴더를 만들었습니다. 귀하에게 적합한 디렉토리를 사용할 수 있습니다.

명령줄/터미널을 열고 다음 명령을 실행하세요.

cd C:\Sites

이제 Composer를 사용하여 CodeIgniter 프로젝트를 만들 것입니다. 다음 명령을 실행합니다.

composer create-project CodeIgniter/framework ci-app

이리,

  • 위 명령은 최신 안정 릴리스(예: 3)를 사용하여 ci-app 디렉토리에 새로운 CodeIgniter 프로젝트 버전 3.1.9을 생성합니다.

위 명령이 실행되면 터미널에서 다음과 유사한 결과를 볼 수 있어야 합니다.

새 CodeIgniter 프로젝트 생성

다음 명령을 실행하여 새로 생성된 프로젝트 디렉토리 ci-app를 찾아보세요.

cd ci-app

이제 PHP 내장 웹 서버를 시작해 보겠습니다.

 php -S localhost:3000

이리,

  • 위 명령은 포트 3000에서 실행되는 내장 PHP 서버를 시작합니다.

웹 브라우저를 열고 다음 URL을 탐색해보세요. http://localhost:3000/

다음 페이지가 나타납니다.

새 CodeIgniter 프로젝트 생성

위 페이지가 보이면 축하합니다. 성공적으로 설치되었습니다. CodeIgniter.

위의 웹 페이지에서 읽을 수 있듯이 위에 표시된 페이지는 application/views/welcome_message.php에 있는 뷰에 의해 렌더링되고 책임 컨트롤러는 application/controllers/Welcome.php에 있습니다.

CodeIgniter 라우팅

현재 우리 애플리케이션에는 홈페이지인 단일 URL만 있습니다. 이 섹션에서는 홈 섹션을 사용자 정의합니다. 우리는 다양한 요청에 응답할 몇 가지 새로운 URL을 생성할 것입니다.

홈페이지 경로부터 시작해 보겠습니다.

아래 경로에 표시된 대로 경로 파일을 엽니다.

application/config/routes.php

다음 내용을 볼 수 있어야 합니다.

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

이리,

  • $route['default_controller'] = '환영합니다'; URI 요청에 응답하는 기본 컨트롤러를 정의합니다.
  • $route['404_override'] = ”; 이 경로를 사용하면 404 오류에 대한 사용자 지정 경로를 정의할 수 있습니다. 페이지를 찾을 수 없으면 404 오류가 발생합니다. CodeIgniter에는 오류에 대한 기본 처리기가 있지만 원하는 경우 직접 정의할 수 있습니다.
  • $route['translate_uri_dashes'] = 거짓; 이 옵션을 사용하면 대시를 밑줄로 변환할 수 있습니다. CodeIgniter에서 경로가 작동하는 방식을 살펴볼 때 이 옵션에 대해 이야기하겠습니다.

이제 URL을 열 때 본 홈 페이지를 표시하는 컨트롤러 메서드를 살펴보겠습니다. http://localhost:3000/ 웹 브라우저에서.

다음 파일을 열어보세요

application/controllers/Welcome.php

다음 코드를 볼 수 있어야 합니다.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

	public function index()
	{
		$this->load->view('welcome_message');
	}
}

이리,

  • Defined ('BASEPATH') OR exit('직접 스크립트 액세스가 허용되지 않습니다.'); index.php 파일을 거치지 않고 컨트롤러 클래스에 직접 접근하는 것을 방지합니다. MVC 패러다임에서는 모든 요청에 ​​단일 진입점이 있고 CodeIgniter의 경우 index.php가 있다는 점을 기억하세요. 이 코드는 index.php를 통해 들어오지 않는 모든 요청을 차단합니다.
  • class Welcome은 CI_Controller를 확장합니다. {...}는 상위 클래스 CI_Controller를 확장하는 Welcome 클래스를 정의합니다.
  • public function index()는 홈페이지를 열 때 기본적으로 호출되는 public 함수를 정의합니다.
  • $this->load->view('welcome_message'); 이 줄은 Welcome_message 뷰를 로드합니다. Welcome_message 파일은 application/views/welcome_message.php 디렉토리에 있습니다.

지금까지 CodeIgniter에서 기본적으로 제공되는 것만 살펴보았습니다. 이제 몇 가지 변경을 시도해 보겠습니다. 홈페이지를 만들고 기본 페이지를 대체합니다.

application/views/home.php에 새 파일을 생성합니다.

home.php에 다음 코드를 추가하세요.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Hello CodeIgniter!</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
        <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
    </head>
    <body>
        <section class="section">
            <div class="container">
                <h1 class="title">
                    CodeIgniter Hello World
                </h1>
            </div>
        </section>
    </body>
</html>

이리,

위의 HTML 코드는 CDN 네트워크에서 Burma SSS 프레임워크와 글꼴을 로드하여 매우 기본적인 HTML 문서를 생성합니다. Burma CSS 프레임워크의 매우 간단한 CSS 규칙을 적용합니다.

브라우저에서 다음 URL을 여세요. http://localhost:3000/

다음을 볼 수 있어야 합니다.

CodeIgniter 라우팅

좋습니다. 홈 페이지를 성공적으로 수정했습니다. 계속해서 경로를 정의해 보겠습니다. 우리 애플리케이션이 회사 소개 페이지도 표시할 수 있어야 한다고 가정해 보겠습니다.

경로 생성

경로 파일 application/config.routes.php를 엽니다.

다음 경로를 추가하세요

$route['about-us'] = 'welcome/about_us';

이리,

  • 방문자가 URL /about-us를 방문하면 CodeIgniter에 Welcome 컨트롤러를 찾고 about_us 메서드를 실행하도록 지시합니다.

컨트롤러 생성

이제 우리에 대한 컨트롤러 메서드를 정의해 보겠습니다.

애플리케이션/컨트롤러/Welcome.php를 엽니다.

다음 방법을 추가하세요

public function about_us(){
            $this->load->view('about_us');
        }

이리,

  • 위 코드는 about_us 함수를 정의하고 about_us 뷰를 로드합니다.

보기 만들기

이제 위 섹션에서 방금 참조한 뷰를 만들어 보겠습니다.

application/views/about_us.php에 about_us.php라는 새 파일을 생성하세요.

다음 코드를 추가하세요

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>About CodeIgniter!</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
        <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
    </head>
    <body>
        <section class="section">
            <div class="container">
                <h1 class="title">
                    About us yap...                
                </h1>
            </div>
        </section>
    </body>
</html>

이제 웹 브라우저에서 다음 URL을 열어보세요. http://localhost:3000/index.php/about-us

다음 페이지가 표시됩니다.

CodeIgniter에서 뷰 생성

위 페이지를 볼 수 있다면 축하합니다. CodeIgniter에서 간단한 애플리케이션을 성공적으로 생성한 것입니다.

요약

이 튜토리얼에서는 CodeIgniter 애플리케이션을 구성하는 세 가지 주요 구성 요소를 다루었습니다. 우리는 경로와 이를 정의하는 방법, 컨트롤러를 살펴보고 경로 요청에 응답하는 메서드를 만드는 방법과 리소스를 요청할 때 사용자에게 반환되는 간단한 보기를 만드는 방법을 살펴보았습니다.