Getting Started Refactor an exists source
Wednesday, November 2, 2022 1:46 PM기존소스 수정
구현 규칙
구분 | 경로 | |
---|---|---|
Request URL | http://gdadmin.example.com/base/layer_schedule_popup.php | |
Controller | /system/src/Bundle/Controller/Admin/Base/LayerSchedulePopupController.php |
- 요청한 주소에 따라
Controller
는 물리적으로 폴더와 파일명이 위의 테이블과 같이 정확한 위치에 존재해야 합니다. - 이와 같이
url
은Underbar
형태로 단어를 구분하고 컨트롤러는Underbar
를 제거한SnakeCamelCase
형식으로 네이밍을 해야합니다.
구현 예제
관리자 페이지 스케줄 팝업 변경
-
관리자 로그인 시 스케줄 팝업 오류 내용은 아래와 같으며
LayerSchedulePopup
의Controller
가 필요합니다. -
아래 가이드에서는
system
의Wrapper Controller
생성은 생략하였습니다.ReflectionException Class Controller\Admin\Base\LayerSchedulePopup does not exist
-
기존 소스인 '/system/src/Bundle/Controller/Admin/Base/layer_schedule_popup.php'를 변경해 보겠습니다.
-
Controller를 생성합니다. '/system/src/Bundle/Controller/Admin/Base/LayerSchedulePopupController.php'
-
기존의 소스에서 바뀌는 부분은 주석으로 안내 합니다. 생성이 완료되면 오류가나던 팝업의 화면이 보입니다.
namespace Bundle\Controller\Admin\Base;
use Request;
use Globals;
class LayerSchedulePopupController extends \Controller\Admin\Controller
{
public function index() {
/**
* 스케줄(일정관리) 팝업보기
*
* @author GDOO Development <development@godo.co.kr>
* @copyright ⓒ 2016, NHN godo: Corp.
*/
// schedule 정의
$schedule = \App::load(\Component\Admin\Schedule::class);
$data = $schedule->getDayContents();
// 관리자 디자인 템플릿
$this->getView()->setDefine ('layout', 'layout_blank.php');
$this->getView()->setDefine ('layoutContent', Request::getDirectoryUri() . '/' . Request::getFileUri());
$this->setData('headerStyle', [
PATH_ADMIN_GD_SHARE . 'css/main.css'
]);
$this->setData('headerScript', [
PATH_ADMIN_GD_SHARE . 'script/jquery/jquery.cookie.js',
PATH_ADMIN_GD_SHARE . 'script/schedule.js'
]);
$this->setData('data', is_set($data));
}
}
스케줄 팝업 오류 수정
- 팝업 컨트롤러가 정상적으로 생성되면 팝업 화면이 보이지만 주소표시줄에 오류가 표기됩니다.
- 기존 소스인 '/system/src/Bundle/Controller/Admin/Base/schedule_ps.php'를 변경해 보겠습니다.
- 오류 해결을 위해 스케줄 처리 클래스를 생성합니다. '/system/src/Bundle/Controller/Admin/Base/SchedulePsController.php'
- 스케줄 처리 컨트롤러가 생성완료 되면 팝업이 안보이게 됩니다.(스케줄 알림이 없어서 그런듯 합니다.)
namespace Bundle\Controller\Admin\Base;
use ErrorMessage;
class SchedulePsController extends \Controller\Admin\Controller
{
public function index() {
... // 기존 소스의 try() catch() 구문을 여기에 넣습니다.
}
}
스케줄 작성
- 기존 소스인
/system/src/Bundle/Controller/Admin/Base/layer\_schedule\_register.php
를 변경해 보겠습니다. - 스케줄 작성 컨트롤러를 생성합니다.
/system/src/Bundle/Controller/Admin/Base/LayerScheduleRegisterController.php
namespace Bundle\Controller\Admin\Base;
use Globals;
class LayerScheduleRegisterController extends \Controller\Admin\Controller {
public function index() {
... // 기존 소스의 로직을 넣습니다. 템플릿 설정과 데이터 전달 함수만 수정 하면 됩니다.
}
}
스케줄 알람 설정하기
- 기존 소스인
/system/src/Bundle/Controller/Admin/Base/layer\_schedule\_setalarm.php
를 변경해 보겠습니다. - 알람 컨트롤러를 생성합니다.
/system/src/Bundle/Controller/Admin/Base/LayerScheduleSetalarmController.php
- 알람 설정을 하고 새로고침 하면 알람 팝업이 발생합니다.
namespace Bundle\Controller\Admin\Base;
use Globals;
class LayerScheduleSetalarmController extends \Base\Admin\Controller {
public function index() {
... // 기존 소스의 로직을 넣습니다. 템플릿 설정과 데이터 전달 함수만 수정 하면 됩니다.
}
}