구현할 견적서 모듈의 관리자 견적서폼 목록입니다.

form.admin.view.php에 formAdminView class 작성

module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.

    class formAdminView extends form {
        /**
         * @brief 초기화
         **/
        function init() {}
        /**
         * @brief 견적서(mid) 목록
         **/
        function dispFormAdminList(){}
        /**
         * @brief 견적서(mid) 추가 폼
         **/
        function dispFormAdminInsert(){}
        /**
         * @brief 확장 변수 설정
         **/
        function dispFormAdminExtraVars() {}
}

formAdminView::init() 생성자

init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.

        /**
         * @brief 초기화
         **/
        function init() {

            // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅
            $module_srl = Context::get('module_srl');
            if(!$module_srl && $this->module_srl) {
                $module_srl = $this->module_srl;
                Context::set('+ '+ 'module_srl', $module_srl);
            }

            // module model 객체 생성
            $oModuleModel = &getModel('module');

            // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음
            if($module_srl) {
                $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
                $this->module_info = $module_info;
                Context::set('module_info',$module_info);
            }

            // tpl인 관리자 템플릿으로 경로 설정
            // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.
            $template_path = sprintf("%stpl/",$this->module_path);
            $this->setTemplatePath($template_path);
        }

formAdminView::dispFormAdminList() : 견적서폼 목록

form 모델 객체에서 견적서 폼 목록을 받아 tpl/list.html 템플릿에 전달합니다.

        /**
         * @brief 견적서(mid) 목록
         **/   
        function dispFormAdminList(){
            $page = Context::get('page');                                                               
            if(!$page) $page = 1;
            $args->page = $page;
                                                                                                        
            // form model에서 목록을 가져옴
            $oFormModel = &getModel('+ 'form');                                                            
            $output = $oFormModel->getFormList($args);
               
            // 템플릿에 전해주기 위해 set함
            Context::set('form_list', $output->data);                                                   
            Context::set('page_navigation', $output->page_navigation);                                  
               
            // tpl/list.html 로 지정
            $this->setTemplateFile('list');
        }         

formModel::getFormList()

form.model.php의 formModel class에 getFormList() member method를 작성합니다.

    class formModel extends module {
        function getFormList($args){
            $output = executeQueryArray('form.getFormList', $args);
            return $output;
        }
   }

form/queries/getFormList.xml

executeQueryArray('form.getFormList', $args); 에서
Query ID "form.getFormList" Query는 form/queries/getFormList.xml 입니다.

<query id="getFormList" action="select">
    <tables>
        <table name="modules" />
    </tables>
    <columns>
        <column name="*" />
    </columns>
    <conditions>
        <condition operation="equal" column="module" default="form" />
    </conditions>
    <navigation>
        <index var="sort_index" default="module_srl" order="desc" />
        <list_count var="list_count" default="20" />
        <page_count var="page_count" default="10" />
        <page var="page" default="1" />
    </navigation>
</query>

select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.

formModel::getFormList($args) 에서 $args->page 값이 <page var="page" default="1" /> 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args->list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서폼이 나열됩니다.

form/tpl/list.html

formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.

Context::set('form_list', $output->data);                                                   
Context::set('page_navigation', $output->page_navigation);  

$this->setTemplateFile('list');

실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.

 13 <tbody>
 14     <!--@foreach($form_list as $no => $val)-->
 15     <tr class="row{$cycle_idx}">
 16         <td>{$no}</td>
 17         <td class="wide"><a href="{getUrl('','mid',$val->mid)}" title="{htmlspecialchars($lang->cmd_view)}">{$val->browser_title}</a></td>
 18         <td class="nowrap">{zdate($val->regdate,"Y-m-d")}</td>
 19         <td class="nowrap">
 20             <a href="{getUrl('act','dispFormAdminInsert','module_srl',$val->module_srl)}" class="buttonSet buttonSetting"><span>{$lang->cmd_setup}</span></a>
 21         </td>
 22     </tr>
 23     <!--@end-->
 24 </tbody>


이종택

2010.11.12 11:55:32
*.169.84.74

Context::set('+ 'module_srl', $module_srl);

오타 인가요?

sol

2010.11.12 13:41:56
*.64.86.68

오타 맞습니다 ^^