본문 바로가기
마젠토 2

Magento 2 URL 생성과 Controller Action

by OK소프트 2024. 11. 17.

Chapter 6 URL 생성과 Controller Action

이번 장에선 URL 생성과 Controller Action 클래스를 만들어 보겠습니다. Controller Action 클래스란 MVC(Model–View–Controller) 패턴의 Controller 클래스의 행위 즉 Action을 정의한 클래스입니다. 보다 쉽게 말하면 MVC 패턴의 Controller의 역할을 하는 클래스입니다.

6.1 ‘Hellow magento 2’ 출력 모듈 만들기

웹 브라우저에 http://dev.magento.com/chapter06/examples/hellow 을 입력 시 ‘Hellow magento 2’를 출력해 주는 모듈을 만들어 보겠습니다.

Step 1 모듈 만들기

1. 디렉터리 만들기

 
$> mkdir -p app/code/Example/RoutingAndController
 

2. etc/module.xml 생성하기

File: app/code/Example/ModuleCreate/registration.php

 
/* */ <?php
    \Magento\Framework\Component\ComponentRegistrar::register(
        \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Example_ModuleCreate', __DIR__
    );
 

3. registration.php 생성하기

File: app/code/Example/RoutingAndController/registration.php

 
<?php
namespace Example\SampleModule\Controller\Sample;
 
class Hellow extends \Magento\Framework\App\Action\Action {
    public function execute() {
        echo "Hello Magento 2";
    }
}
 

4. 모듈 등록

 
$> php bin/magento module:enable Example_RoutingAndController
$> php bin/magento setup:upgrade --keep-generated
 

Step 2 etc/frontend/routes.xml

routes.xml은 url 라우팅을 설정합니다. 5.2장 Area에서 보았던 내용이 생각나세요? 물론 frontent란 디렉터리 명으로 직관적으로도 알 수도 있겠지만 etc/frontent/router.xml은 우리가 만들 URL 라우팅 설정이 frontend 영역에서 사용됨을 지정합니다. routes.xml 파일을 생성합니다.

File: app/code/Example/RoutingAndController/etc/frontend/routes.xml

 
<?xml version="1.0" ?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
        <router id="standard">
            <route frontName="chapter06" id="chapter06">
                 <module name="Example_RoutingAndController"/>
            </route>
        </router>
     </config>
 

<router id > : Magento에서 사용될 라우터 클래스를 지정한다. 프런트엔드의 라우팅 시 에는 standard를 관리자 페이지 라우팅 시는 admin을 사용한다.

<route frontName >: URL의 첫 번째 세그먼트를 지정한다. 관습적으로 <router id>와 동일한 값을 사용한다.

<route id >:경로 고유 ID

<module name>: 라우팅 설정이 적용될 모듈명

Note: Magento 라우터 클래스란?

사용자의 요청이 들어왔을 때 해당 요청을 처리해할 Action 클래스를 찾는 역할을 담당합니다.

Step 3 Controller Action Class 만들기

Magento 모듈 개발 시 Controller 명이란 app/code/{벤더명}/{모둘명}/Controller 폴더의 하위에 존재하는 디렉터리 명을 말합니다. 해당 디렉터리엔 Controller의 행위를 정의한 Action Class가 존재합니다. ‘Hellow magento 2’를 출력할 Action Class를 생성합니다.

File: app/code/Example/RoutingAndController/Controller/Examples/Hellow.php

 
<?php
namespace Example\RoutingAndController\Controller\Examples;
 
class Hellow extends \Magento\Framework\App\Action\Action // XXX: #1 {
    public function execute() // XXX: #2 {
        echo "Hello Magento 2";
     }
}
 

#1 Magento에서 프런트 앤드 영역의 Controller의 Action 클래스를 작성 시에는 항상 \Magento\Framework\App\Action\Action을 상속받아야 한다

#2 Controller의 Action의 로직은 execute() 메서드에 작성을 하여야 한다

Step 4 Code compiler

Magento에서는 코드 컴파일 이란 기능이 있습니다. 코드 컴파일은 팩토리, 프록시, 종속성 주입, 인터셉터 생성 등의 Magento에서 필요한 코드를 generated 폴더에 생성하는 작업을 말합니다. 운영 모드가 developer 모드일 경우 자동 생성된다고 하나 코딩 시 클래스 생성, 의존성 주입, di.xml의 변경 작업 후에는 코드 컴파일 작업을 진행 하는 게 좋습니다.

 
$> php bin/magento setup:di:compile
 

브라우저로 http://dev.magento.com/chapter06/examples/hellow

에 접근해 'Hellow magento 2’가 노출되는지 확인해보세요

다음 장에선 프런트 앤드의 URL 형식및 리다이렉트, 포워딩 좀더 자세히 컨트롤러를 다뤄보겠습니다.

'마젠토 2' 카테고리의 다른 글

마젠토 2 모듈 만들기  (1) 2024.11.17
Magento 디렉터리 구조  (0) 2024.11.17
마젠토 - 디버깅 모듈 설치 & 로그  (0) 2024.11.17
마젠토 개발을 위한 IDE 설치  (1) 2024.11.17
마젠토 디버깅 - Xdebug  (1) 2024.11.17