CodeIgniter에서 사이트 렌더링 과정

반응형

 

 

1. 사이트 접속 

2. 라우터에 의해 default_controller 는 Config 클래스의 site() 메서드 실행

3. widget head 실행 head 쪽 html은 열린상태

 

4. 다시 돌아와서 skin/config/site.html 로드

 

1~3 은 헤더라고 보면 되고 

4는 말 그대로 사이트 블럭 관련 렌더링 

 

  1. config.php 파일의 site() 메서드 실행.
  2. site() 메서드에서 @widget::run('head', $head) 호출.
  3. widget 클래스의 head.php가 실행되고, 내부적으로 head.html 파일을 로드.
  4. 다시 **config.php**로 돌아와서 $this->load->view('config/site', $data) 호출.
  5. config/site.html 파일이 로드됨.

CodeIgniter에서 사이트 렌더링 과정


1. 사이트 접속

  • 사용자가 브라우저에서 URL을 입력하여 사이트에 접속합니다.
  • 예: http://example.com

2. 라우터에 의해 컨트롤러 결정

  • CodeIgniter의 라우터가 URL을 분석하여 실행할 컨트롤러와 메서드를 결정합니다.
  • routes.php 파일에서 설정된 default_controller에 따라 Config 컨트롤러의 site() 메서드가 실행됩니다.

3. 헤더 렌더링

  1. Config::site() 메서드 실행:
    • config.php 파일의 site() 메서드가 실행됩니다.
    • 이 메서드에서 헤더를 렌더링하기 위해 다음 코드가 호출됩니다:
  2. Widget::run('head', $head) 호출:
    • Widget 클래스의 run() 메서드가 실행됩니다.
    • 이 메서드는 head.php 파일의 index() 메서드를 호출합니다.
  3. head.php의 index() 메서드 실행:
    • head.php의 index() 메서드에서 데이터를 준비하고, 다음 코드로 헤더 뷰 파일을 로드합니다:
    • _head.html 뷰 파일이 로드되어 헤더가 렌더링됩니다.

4. 본문 렌더링

  1. Config::site()로 돌아옴:
    • 헤더 렌더링이 완료된 후, config.php의 site() 메서드로 돌아옵니다.
  2. 본문 뷰 파일 로드:
    • 다음 코드가 실행되어 본문 뷰 파일이 로드됩니다:
    • site.html 뷰 파일이 로드되어 사이트의 블록 관련 콘텐츠가 렌더링됩니다.

5. 푸터 렌더링 (선택적)

  • 필요에 따라 푸터를 렌더링하기 위해 다음 코드가 실행될 수 있습니다:
  • tail.php 위젯이 실행되어 푸터가 렌더링됩니다.

전체 흐름 요약

  1. 사이트 접속:
    • 사용자가 URL을 입력하여 사이트에 접속합니다.
  2. 라우팅:
    • 라우터가 Config 컨트롤러의 site() 메서드를 실행합니다.
  3. 헤더 렌더링:
    • @widget::run('head', $head) 호출 → head.php 실행 → _head.html 뷰 파일 로드.
  4. 본문 렌더링:
    • $this->load->view('config/site', $data) 호출 → site.html 뷰 파일 로드.
  5. 푸터 렌더링 (선택적):
    • @widget::run('tail', $tail) 호출 → 푸터 위젯 실행.

헤더와 본문의 역할

  1. 헤더:
    • head.php와 _head.html에서 처리.
    • 사이트의 공통 레이아웃(메타 태그, CSS, JS, 네비게이션 등)을 렌더링.
  2. 본문:
    • site.html에서 처리.
    • 사이트의 블록 콘텐츠와 렌더링 관련 데이터를 출력.

결론

CodeIgniter는 라우터를 통해 컨트롤러와 메서드를 결정하고, 위젯과 뷰를 순차적으로 호출하여 헤더, 본문, 푸터를 렌더링합니다. 이 구조는 MVC 패턴과 위젯 시스템을 활용하여 코드의 재사용성과 유지보수성을 높이는 방식입니다.

반응형