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을 생성합니다.
위 명령이 실행되면 터미널에서 다음과 유사한 결과를 볼 수 있어야 합니다.
다음 명령을 실행하여 새로 생성된 프로젝트 디렉토리 ci-app를 찾아보세요.
cd ci-app
이제 PHP 내장 웹 서버를 시작해 보겠습니다.
php -S localhost:3000
이리,
- 위 명령은 포트 3000에서 실행되는 내장 PHP 서버를 시작합니다.
웹 브라우저를 열고 다음 URL을 탐색해보세요. http://localhost:3000/
다음 페이지가 나타납니다.
위 페이지가 보이면 축하합니다. 성공적으로 설치되었습니다. 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/
다음을 볼 수 있어야 합니다.
좋습니다. 홈 페이지를 성공적으로 수정했습니다. 계속해서 경로를 정의해 보겠습니다. 우리 애플리케이션이 회사 소개 페이지도 표시할 수 있어야 한다고 가정해 보겠습니다.
경로 생성
경로 파일 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 애플리케이션을 구성하는 세 가지 주요 구성 요소를 다루었습니다. 우리는 경로와 이를 정의하는 방법, 컨트롤러를 살펴보고 경로 요청에 응답하는 메서드를 만드는 방법과 리소스를 요청할 때 사용자에게 반환되는 간단한 보기를 만드는 방법을 살펴보았습니다.