-
Controller 개발
-
고도몰의 Controller 역할
-
Controller 제공 절대상수
-
Controller 제공 메소드
-
download($path, $newFile)
-
json($data)
-
streamedDownload($path)
-
redirect($uri, $title = null, $target = 'self')
-
alert($message, $history = null, $url = null, $target = null, $addScript = null)
-
js($script)
-
layer($message = null, $addScript = null, $timeOut = 3000)
-
layerNotReload($message = null, $addScript = null, $timeOut = 2000)
-
addMeta(array $metaTags)
-
addCss(array $styles, $isShare = false)
-
addScript(array $scripts, $isShare = false, $isFooter = false)
-
callMenu($topMenu, $midMenu, $thisMenu)
-
사용자 정의 Controller 기본 메소드
-
전역으로 사용할 수 있는 사용자 정의 Controller
-
Api 사용자 정의 Controller
Controller 개발
고도몰의 Controller 역할
Controller 제공 절대상수
상수 이름 |
상수 설명 |
PATH_DATA |
데이터 폴더의 경로 /data/ |
PATH_ADMIN_SKIN |
관리자 스킨의 경로 /admin/ |
PATH_ADMIN_GD_SHARE |
관리자 공통 리소스 경로 /admin/gd_share/ |
PATH_SKIN |
프론트에 적용된 라이브 스킨의 경로 /data/skin/front/[스킨명]/ |
PATH_SKIN_WORK |
프론트에 적용된 작업 스킨의 경로 /data/skin/front/[스킨명]/ |
PATH_MOBILE_SKIN |
모바일에 적용된 라이브 스킨의 경로 /data/skin/front/[스킨명]/ |
PATH_MOBILE_SKIN_WORK |
모바일에 적용된 작업 스킨의 경로 /data/skin/front/[스킨명]/ |
USERPATH_SKIN |
/data/skin/front/[스킨명]/ |
USERPATH_SKIN_ADMIN |
/admin/ |
USERPATH_SKIN_MOBILE |
/data/skin/mobile/[스킨명]/ |
URI_HOME |
현재 도메인 링크 http://example.godomall.com/ |
URI_SHARE |
현재 도메인의 share 링크 http://example.godomall.com/share/ |
URI_ADMIN |
관리자 도메인 http://gdadmin.example.godomall.com/ |
URI_PROVIDER |
공급사 관리자 도메인 http://gdadmin.example.godomall.com/provider/ |
URI_MOBILE |
모바일 도메인 http://m.example.godomall.com/ |
URI_API |
API 도메인 http://api.example.godomall.com/ |
Controller 제공 메소드
download($path, $newFile)
- $path의 파일을 $newFile이라는 이름으로 다운로드를 실시합니다.
json($data)
- $data가 비어있는 경우 Controller내 data를 json으로 변경하고 $data가 있는 경우 json을 출력하고 exit 처리됩니다.
streamedDownload($path)
- $path로 index()에 출력하는 모든 버퍼를 파일로 저장합니다.
redirect($uri, $title = null, $target = 'self')
- 페이지를 특정 URI로 이동시킵니다. 일반적으로 동일한 프레임에서 작동하며 iframe이 타겟인 경우는 사용하시면 안됩니다.
alert($message, $history = null, $url = null, $target = null, $addScript = null)
- Alert 창을 출력하며 출력 후 exit 처리됩니다.
js($script)
- $script 텍스트로 사용자 정의 스크립트를 작성하실 수 있습니다.
layer($message = null, $addScript = null, $timeOut = 3000)
- 관리자 컨트롤러에서만 사용할 수 있습니다.
- 레이어를 출력할 수 있으며, 레이어 출력이후 레이어를 닫으면 페이지가 새로고침 됩니다.
layerNotReload($message = null, $addScript = null, $timeOut = 2000)
- 관리자 컨트롤러에서만 사용할 수 있습니다.
- 레이어를 출력할 수 있으며, 레이어 출력이후 레이어를 닫아도 페이지가 새로고침 되지 않습니다.
addMeta(array $metaTags)
- 스킨의 헤더에 메타태그를 추가할 수 있습니다.
-
front
와 mobile
에서만 사용가능하며 admin
에서는 사용할 수 없습니다.
addCss(array $styles, $isShare = false)
- 스타일시트의 경로를 배열로 받아서 스킨 상단에 출력합니다.
- $isShare를 true로 하는 경우
/data/assets
에 있는 공유 리소스를 사용하실 수 있습니다.
- 스크립트의 경로를 Array로 받아서 스킨 상/하단에 출력합니다. (입력 예. ['common.js', 'common2.js'])
- 경로는
/data/[skin path]/js
에 있는 공유 리소스를 사용하실 수 있습니다.
- $isShare를 true로 하는 경우
/data/assets
에 있는 공유 리소스를 사용하실 수 있습니다.
- $isFooter를
- true로 하는 경우 스킨내 {footerScript} 치환코드로 반환합니다.
- false인 경우 스킨내 {headerScript} 치환코드로 반환합니다.
- 관리자 메뉴 데이터를 생성합니다.
- 관리자 메뉴를 새로 추가할 경우, 추가할 메뉴 페이지에 해당되는 컨트롤러 내에서 해당 함수를 호출합니다.
-
Example>Add Admin Menu 페이지에 나와있는대로 es_adminMenu 테이블에 추가할 메뉴 데이터를 insert한 후에 1차메뉴($topMenu), 2차메뉴($midMenu), 3차메뉴($thisMenu) 파라미터 대로 메소드를 호출합니다.
사용자 정의 Controller 기본 메소드
- 고도몰에서는 기본적으로 3개의 사용자 정의 Method를 제공합니다.
- Method 종류
-
pre()
- 시스템 전 처리기
interceptor
의 실행 직전에 실행됩니다.
-
index()
-
post()
- 시스템 후 처리기
interceptor
의 실행 직후에 실행됩니다.
- 실제 코드 확인하시고 아래와 같이 사용하시면 됩니다.
<?php
namespace Controller\Front\Test
class MyController extends \Controller\Front\Controller
{
public function pre()
{
// interceptor 실행 이전 실행할 로직 구현
}
public function index()
{
// 사용자 정의 로직 구현
}
public function post()
{
// interceptor 실행 이후 실행할 로직 구현
}
}
전역으로 사용할 수 있는 사용자 정의 Controller
- 모든 페이지에 공통으로 적용할 수 있는 사용자 정의 컨트롤러를 생성할 수 있습니다.
- 프론트는 module\Controller\Front 경로에 CommonController 클래스를 생성해 주신 후 아래와 같이 사용하시면 됩니다.
<?php
namespace Controller\Front;
/**
* Class pro 사용자들이 모든 컨트롤러에 공통으로 사용할 수 있는 컨트롤러
* 컨트롤러에서 지원하는 메소드들을 사용할 수 있습니다. http://doc.godomall5.godomall.com/Godomall_Guide/Controller
*/
class CommonController
{
public function index($controller)
{
$controller->setData('remoteAddr',\Request::server()->get('REMOTE_ADDR')); //아이피 추가. 스킨에서 {=remoteAddr} 치환코드로 사용가능
$controller->setData('userName', '사용자 이름'); //새 변수 추가하기. 스킨에서 {=userName} 치환코드로 사용가능
}
}
- 모바일은 module\Controller\Mobile 경로에 CommonController 클래스를 생성해 주신 후 아래와 같이 사용하시면 됩니다.
<?php
namespace Controller\Mobile;
/**
* Class pro 사용자들이 모든 컨트롤러에 공통으로 사용할 수 있는 컨트롤러
* 컨트롤러 메소드들을 사용할 수 있습니다. http://doc.godomall5.godomall.com/Godomall_Guide/Controller
*/
class CommonController
{
public function index($controller)
{
$controller->setData('remoteAddr',\Request::server()->get('REMOTE_ADDR')); //아이피 추가. 스킨에서 {=remoteAddr} 치환코드로 사용가능
$controller->setData('userName', '사용자 이름'); //새 변수 추가하기. 스킨에서 {=userName} 치환코드로 사용가능
}
}
Api 사용자 정의 Controller
- api 통신이 가능한 사용자 정의 컨트롤러를 생성할 수 있습니다.
- module/Controller/Api 경로에서 사용하시면 됩니다. 만약 디렉토리가 없다면 생성하고 chmod 707 변경 필수
- Front/Mobile 튜닝과 동일한 방법으로 Controller 생성
- 생성 예시
- 경로: module/Controller/Api/Load/GetApiController.php
- 링크: api.{상점도메인}/load/get_api.php
<?php
namespace Controller\Api;
class MyController extends Bundle\Controller\Api\Controller
{
public function index()
{
...
}
}