Controller 소개

고도몰의 Controller 를 소개하는 내용입니다.

Controller는 Framework의 구동을 제외한 솔루션의 기본 공통 작업부터 화면 출력까지의 업무를 담당합니다.

📌 Controller 실행 순서

  1. view (템플릿 엔진) 설정

  2. Setup()

    • 해당 화면에서 사용될 interceptor 설정 (인증, 레이아웃 설정, 공통변수 설정 등)

    • 사용자 정의 데이터 설정 (추후 지원)

  3. pre() 실행 (사용자 정의 전처리)

  4. interceptor 실행 (시스템 전처리)

    • 설정된 interceptorpreHandle 메소드 실행

    • 환경설정에 등록된 순서에 따라서 순차적으로 interceptor 실행

  5. index()

    • 해당 Controller에서 실행되는 구문 (사용자 정의 가능 영역)

  6. interceptor 실행 (시스템 후처리)

    • 설정된 interceptorpostHandle 메소드 실행

    • 실행 순서는 interceptor 등록 역순

  7. post() 실행 (사용자 정의 후처리)

  8. fetch()

    • 구성된 view를 html로 수신

  9. render()

    • header를 설정한 후 수신된 html 데이터를 화면에 출력

📌 Controller 상속 구조

  • AbstractController는 추상화를 목적으로 index(), setup(), pre(), post()의 추상 메서드가 설정되어 있으며 최종적으로 화면 출력을 담당합니다.

  • ActionController는 컨트롤러가 할 수 있는 action에 대해 정의되어 있습니다.

  • Controller는 위젯, 플러스샵, 헤더설정 및 Controller에서 사용하는 절대상수를 정의합니다.

  • Widget은 넓게 보면 컨트롤러 개념이지만 현 컨트롤러에 종속되어 부분적으로 프로그램+템플릿을 표현할 수 있습니다.

📌 Controller Implement

사용자(PC) 영역

사용자(Mobile) 영역

관리자 영역

위젯 영역

API 영역

📌 Controller Extends

User Source Directory

  • module/Controller/Front/Test/MyController.php

  • result

API

  • module/Controller/api/Test/MyController.php

📌 Data Handling

Controllerindex() 실행 후 interceptor 후처리를 통해 DataHandler interceptor가 실행 되면서 uri에 대응하는 위치에 있는 파일이 실행됩니다. 파일 안에서는 $data 변수를 통해 data를 가공할 수 있습니다.

ex) 사용자 소스 디렉토리(User Source Directory)goods/goods_list.php에 파일을 생성하고 다음과 같이 작성합니다.

  • Bundle/Controller/Front/Goods/GoodsListController.php

  • goods/goods_list.php

  • result [ 'data' => 'not original', 'data2' => 'new data' ]

📌 View Rendering

View 출력 예제

JSON 출력 예제

파일 다운로드 예제

스트림 파일 다운로드 예제

리다이렉트 예제

Last updated

Was this helpful?