기존소스 수정

구현 규칙

구분 경로
Request URL http://gdadmin.example.com/base/layer_schedule_popup.php
Controller /system/src/Bundle/Controller/Admin/Base/LayerSchedulePopupController.php
  • 요청한 주소에 따라 Controller는 물리적으로 폴더와 파일명이 위의 테이블과 같이 정확한 위치에 존재해야 합니다.
  • 이와 같이 urlUnderbar형태로 단어를 구분하고 컨트롤러는 Underbar를 제거한 SnakeCamelCase 형식으로 네이밍을 해야합니다.

구현 예제

관리자 페이지 스케줄 팝업 변경

  • 관리자 로그인 시 스케줄 팝업 오류 내용은 아래와 같으며 LayerSchedulePopupController가 필요합니다.

  • 아래 가이드에서는 systemWrapper 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() {
    ... // 기존 소스의 로직을 넣습니다. 템플릿 설정과 데이터 전달 함수만 수정 하면 됩니다.
    }
}