
Chapter 5 마젠토 2 모듈 만들기
Magento에서의 주요 개발은 모듈과 테마 단위로 이루어집니다. 이번 장에서는 모듈을 만드는 방법에 대해 설명하겠습니다. Magento의 확장 프로그램은 모듈로 개발되며, 이를 통해 모듈의 등록 및 삭제를 통해 해당 모듈의 사용 여부를 설정할 수 있습니다.

5.1 모듈의 디렉터리 구조
Magento 모듈의 디렉터리 구조를 알아보겠습니다.
- etc: 설정 파일이 저장될 디렉터리
- Block: Block 클래스가 저장될 디렉터리
- Model: Model, Resource, Collection 등의 데이터 핸들링 클래스가 저장될 디렉터리
- Controller: Controller Action 클래스가 저장될 디렉터리
- Helper: Helper 클래스가 저장될 디렉터리
- Console: CLI 클래스가 저장될 디렉터리
- Api: API 인터페이스 클래스가 저장될 디렉터리
- Observer: Observer 클래스가 저장될 디렉터리
- i18n: 언어 패키지가 저장될 디렉터리
- Setup: 모듈의 버전에 따라 데이터베이스의 스키마와 데이터를 생성, 변경, 수정, 삭제 등을 처리하는 클래스가 저장될 디렉터리
- Plugins: Plugins 클래스가 저장될 디렉터리
- Ui: UI Component와 상호 작용되는 DataSource 클래스가 저장될 디렉터리
- Cron: 배치 클래스가 저장될 디렉터리
- view: 템플릿, CSS, JS, 미디어 파일이 저장될 디렉터리

Notice : 모듈의 디렉터리 구조 중 이해되지 않는 용어가 나오더라도 신경 쓰지 말고 계속 읽어 주시기 바랍니다. 각 기능에 대한 중요한 설명은 이후 챕터에서 따로 다룰 것입니다. 이를 통해 우린 자연스럽게 이해하고 익히게 될것입니다.
5.1 Area
모듈을 개발하기 전에 알아야 할 내용이 있습니다. Magento는 논리적 요소인 Area를 사용하여 요청에 따라 해당 영역에 종속된 코드만을 로드하여 사용합니다. 예를 들어, 사용자 노출 페이지에서의 호출일 경우 사용자와 관련된 클래스를 로드하며, 관리자 페이지에서의 호출일 경우 관리자 페이지와 관련된 클래스를 로드하여 사용합니다. Area의 종류는 아래와 같습니다.
- adminhtml: 관리자 페이지 영역
- frontend: 사용자 노출 페이지 영역
- base: adminhtml 및 frontend 두 영역에서 모두 사용 가능한 영역
- crontab: 배치 작업 영역
- webapi_rest: REST API 영역
- graphql: GraphQL 영역
- webapi_soap: SOAP API 영역
TIP :
GraphQL이란? 웹 클라이언트가 서버로부터 데이터를 효율적으로 가져오는 것을 목적으로 하는 Facebook에서 만든 쿼리 언어입니다.
SOAP이란? 컴퓨터 네트워크 상에서 HTTP, HTTPS 등을 통해 XML 기반 메시지를 교환하는 프로토콜입니다.

5.2 모듈 만들기
Step 1 모듈 디렉터리 만들기
Magento에서 사용자가 개발한 모듈은 app/code에 저장됩니다. (Magento 공식 문서에서는 사용자가 만든 프로그램을 app/code에 넣어 Magento 코어와 구분하도록 권장하고 있습니다.) 모듈 생성 시 디렉터리 명의 첫 글자는 대문자로 작성해야 하며, 디렉터리 생성 규칙은 아래와 같습니다.
모듈 디렉터리를 생성해 보겠습니다.
Step 2 etc/module.xml
모듈의 버전, 이름, 모듈 간의 로드 순서를 정의하는 module.xml 파일을 다음과 같이 생성해 주세요
File: app/code/Example/ModuleCreate/etc/module.xml
<module name>: 모듈명을 정의한다.
<module setup_version>: 모듈의 버전을 정의한다. 모듈의 버전은 DB 스키마 와 데이터 작업에 사용된다.
sequence: 현재 모듈이 다른 모듈의 코드를 사용하는 경우 종속 선언을 한다. 이 선언으로 인해 Magento는 모듈 설치 순서를 정한다.
Step 3 registration.php
Magento에 추가되는 컴포넌트들은 \Magento\Framework\Component\ComponentRegistrar 클래스를 통해 Magento 시스템에 등록해야 사용할 수 있습니다. 다음과 같이 클래스 파일을 생성해 주세요
File: app/code/Example/ModuleCreate/registration.php
#1 ComponentRegistrar 클래스는 등록 가능한 유형으로 MODULE, LIBRARY, THEME, LANGUAGE, SETUP을 선택할 수 있다.
Step 4 모듈 등록
개발된 모듈을 Magento에 등록하려면 Magento가 설치된 폴더로 이동한 후, 아래 명령어를 실행하시면 됩니다. 또한, 모듈의 등록을 해제하려면 enable을 disable로 변경해 주시면 됩니다.
또한 모듈의 등록 상태는 아래 명령어를 사용해 확인할수 있습니다.
웹브라우저로 http://dev.magento.com를 접근하면 화면에 에러 메시지가 출력되는 걸 볼수 있습니다. 이번엔 아래 쿼리를 Database 관리 툴을 통해 실행 시켜보세요
아무런 결과 값도 나오지 않을겁니다. setup_module 테이블은 Magento에서 모듈을 관리하는 테이블입니다. 모듈을 생성하거나 모듈의 버전이 변경되었을 경우, 변경된 모듈의 버전 정보가 setup_module 테이블에 저장되어야 합니다. 아래 명령어를 실행하여 생성한 모듈의 정보를 Magento DB에 적용시킵니다.
“bin/magento setup:upgrade”는 Magento의 DB 스키마 및 데이터를 업그레이드하는 명령어입니다. “bin/magento setup:upgrade” 을 실행하면 Magento 코드 컴파일에 의해 생성된 코드와 캐시를 삭제합니다. 이때 옵션“--keep-generated ”을 추가 후 실행하면 코드 컴파일에 의해 생성된 코드와 캐시를 지우지 않고 실행이 됩니다.
다시 아래 쿼리를 을 Database 관리 툴을 통해 실행을 실행시켜 보시기 바랍니다.
다시 웹브라우저로 돌아가 "http://dev.magento.com"를 방문해 보세요
마치며
첫번쨰 마젠토 모듈을 성공리에 개발한것을 축하드립니다. 다음장에서는 URL 생성과 Controller Action 클래스에 대해 다루어 보겠습니다.
'마젠토 2' 카테고리의 다른 글
Magento 2 URL 생성과 Controller Action (0) | 2024.11.17 |
---|---|
Magento 디렉터리 구조 (0) | 2024.11.17 |
마젠토 - 디버깅 모듈 설치 & 로그 (0) | 2024.11.17 |
마젠토 개발을 위한 IDE 설치 (1) | 2024.11.17 |
마젠토 디버깅 - Xdebug (1) | 2024.11.17 |