본문 바로가기
기타

코드이그나이터 튜토리얼 - 정적 페이지, 뉴스 섹션

2021. 12. 21.

http://ci4doc.cikorea.net/tutorial/static_pages.html

 

정적 페이지(Static pages) — CodeIgniter 4.1.5 documentation

정적 페이지(Static pages) Note 이 튜터리얼은 CodeIgniter를 다운로드하고 개발 환경에 프레임워크를 설치 했다고 가정합니다. 가장 먼저 할 일은 정적 페이지를 처리​​할 controller를 설정하는 것입

ci4doc.cikorea.net

http://ci4doc.cikorea.net/tutorial/news_section.html

 

뉴스 섹션 — CodeIgniter 4.1.5 documentation

이전 섹션에서는 정적 페이지(static page)를 참조하는 클래스를 작성하여 프레임워크의 몇 가지 기본 개념을 살펴 보고 사용자 정의 라우팅 규칙을 추가하여 URI를 정리했습니다. 이제 동적(dinamic)

ci4doc.cikorea.net

튜토리얼을 따라 하나씩 만들어보면 된다.

 

코드이그나이터 개발자 모드 활성화하기

기본적으로 production 모드로 세팅되어 있기 때문에 오류가 나면 whoops! 어쩌구 하는 페이지가 뜨고 어떤 오류인지 디버깅을 할 수는 없다. 그러므로 development 모드로 바꿔주어야 한다. 공식 튜토리얼에 따라서 .env 파일에 개발 모드로 변경해주는 것을 해줬는데도 개발자 모드로 바뀌지 않았다. 찾아보니 public/index.php 에서 모드 설정 하는 부분이 또 있었다. 아래 링크를 따라서 해주니 잘 설정되었다.

https://itadventure.tistory.com/

 

크레이의 IT탐구

웹개발 프론트/백단, 윈폼클라이언트 등을 주로 개발하며 미래의 기술에 관심 많은 개발자입니다. 제가 아직도 이 일을 할 수 있는 것은 나의 하나님께서 능력을 주시기 때문이리라 믿습니다.

itadventure.tistory.com


app/Controllers : 컨트롤러는 웹 어플리케이션에 대한 모든 요청의 중심.

app/Views : 보여줄 정적 페이지들을 담고 있다. app/Views 안에는 본문 앞뒤로 붙일 header와 footer를 담는 templates 디렉토리와, 각각 요청에 맞게 보여줄 본문을 담은 pages 디렉토리가 있다.

app/Config/Routes.php : 라우팅 파일의 Route Definitions 에서 라우팅을 담당한다. 

 

app/Config/Routes.php에서 사용자 지정 라우팅 규칙 지정하기

아무것도 세팅되지 않은 localhost:8080 으로 접속하면 코드이그나이터 welcome 페이지가 나오는 이유도 이곳에서 설정해두었기 때문이다.

$routes->get('/', 'Home::index');

위 코드에 따라 '/' 경로에 대해 Home 컨트롤러 내의 index() 메소드로 처리한다. (index() 메소드는 코드이그나이터 welcome 페이지를 표시)

$routes->get('/', 'Home::index');
$routes->get('(:any)', 'Pages::view/$1');

두번째 줄을 추가해주었다.

코드이그나이터는 라우팅 규칙을 위에서 아래로 읽으며, 가장 먼저 일치하는 규칙으로 라우팅 한다.

'/'에 해당하면 첫번째 코드가 지정한 규칙에 딱 걸리기 때문에 첫번째 코드의 라우팅으로 넘어간다.

그 외에 것들은 (첫번째 코드의 규칙에 맞지 않는 것들) 두번째 코드에 따라 라우팅된다. 입력값이 home 이라면 Pages 컨트롤러 내의 view/home으로 라우팅되고 about 이면 view/about 으로 라우팅된다.

이렇게 설정해줌으로써 원래는 localhost:8080/pages/view/home 혹은 localhost:8080/pages/view/about 으로 접근하던 페이지들을 localhost:8080/home, localhost:8080/about 으로 좀더 간단하게 접근할 수 있게 되었다.

+) "views/$1" 이 부분은 인자를 넘겨주는 의미라는 건 알겠는데 정확한 규칙은 모르겠다.

 

라우팅 규칙은 아래 링크에서 더 자세히 확인할 수 있다.

http://ci4doc.cikorea.net/incoming/routing.htmlf

 

URI 라우팅(Routing) — CodeIgniter 4.1.5 documentation

경로(route)를 만드는 모든 메소드(add, get, post, resource etc)는 생성된 경로를 수정하거나 추가로 제한할 수 있는 옵션을 배열로 취할 수 있습니다. $options 배열은 항상 마지막 매개 변수(parameter)입니

ci4doc.cikorea.net

 

데이터베이스 연결 

- 로컬 구성 파일 .env 를 열어서 내 데이터베이스에 맞게 수정해주었다.

database.default.hostname = localhost
database.default.database = ci_tutorial
database.default.username = root
database.default.password = 1234
database.default.DBDriver = MySQLi

- 이것만 바꿔주면 될 줄 알았는데 오류가 났다. 

app/Config/Database.php 에서 구성 자체를 바꿔주었더니 오류가 해결됐다.

여기서 default 로 설정된 걸 .env에서 설정한 거니까 되겠거니 했는데 그게 아닌가보다. 일단 됐으니까 넘어가는데 다음에 다시 찾아봐야 할 것 같다.

http://ci4doc.cikorea.net/database/configuration.html

 

데이터베이스 구성 — CodeIgniter 4.1.5 documentation

데이터베이스 구성 CodeIgniter에는 데이터베이스 연결 값(username, password, database name, etc.)을 저장할 수 있는 구성(config) 파일이 있습니다. 구성 파일은 app/Config/Database.php에 있습니다. .env 파일에서

ci4doc.cikorea.net

 

<comment>

- 튜토리얼을 따라 하나씩 만들어가면서 코드이그나이터의 전체적인 구조에 익숙해지는 과정이었다. 예를 들어 기능 하나, 페이지 하나를 만든다고 할 때 어느 부분을 건드려야 할지 감이 조금 잡히는 것 같다. 지금 생각나는 구조를 정리해보자면, 컨트롤러-뷰-라우팅 순으로 작업을 해주면 될 것 같다.

- 어떤 요청이 들어왔을 때 어떤 응답을 보내줄 것인가에 대해 가장 중점적인 역할을 하는 것이 컨트롤러이므로 컨트롤러를 가장 먼저 만들어주는 것이 좋다. 결국은 요청에 대한 응답을 만드는 것이기 때문이다. 튜토리얼에서 봤던 예시처럼 news 데이터에 대한 요청을 받아서 그 응답으로 news 데이터에 대한 페이지를 구성해줘야 한다면. 우선은 크게 /news 로 들어왔을 때와, 각 news 아이템들을 클릭해서 각각의 데이터를 요청했을 때 이렇게 2가지로 나뉠 수 있다. 그러니 컨트롤러도 크게 2가지 메서드를 갖게 된다. 

예시로 사용했던 news의 경우, db에서 해당하는 뉴스 데이터를 뽑아올 수 있고 (전체 혹은 특정한 하나의 뉴스 데이터) 컨트롤러는 이러한 모델을 통해 데이터를 검색한다. 그러므로, 모델을 만들고 컨트롤러를 만들면 들어온 요청에 맞게 원하는 데이터를 db에서 검색해서 뽑아낼 수 있는 것이다. 하지만 여기까지만 만들어놓으면 결과적으로 화면에 표시되는 것은 아무것도 없다. 화면에 표시될 view 를 작성하고, 컨트롤러에서는 데이터를 전달할 view() 메소드 코드를 추가해서 모델-컨트롤-뷰 전체 과정을 연결시켜주어야 한다.

좀더 세세한 과정을 정리해보자. 우선, db 를 세팅 및 생성해줘야 하고, 이렇게 만들어진 db를 config 파일을 통해 어플리케이션과 연결해준다. db에서 원하는 데이터를 뽑아낼 수 있도록 모델을 만들고, 모델로 뽑아낸 데이터를 사용자에게 보여줄 뷰에 보여줄 수 있도록 연결해줄 수 있는 컨트롤러를 만든다. 사용자에게 보여질 view 페이지를 구성한다.

댓글