04. 관리자의 견적서폼 목록 부분 구현하기

Views 2735 Votes 0 2010.11.12 13:41:56
sol *.13.13.164
Subject Developer Date
04. 관리자의 견적서폼 목록 부분 구현하기 (current) sol 2010.11.12 13:41:56
Restore
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250839898862">form.admin.view.php에 formAdminView class 작성</a></li><li class="toc3"><a href="#h1250839908033">formAdminView::init() 생성자</a></li><li class="toc3"><a href="#h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</a></li><li class="toc3"><a href="#h1250838330707">formModel::getFormList()</a></li><li class="toc3"><a href="#h1250838496423">form/queries/getFormList.xml</a></li><li class="toc3"><a href="#h1250838568309">form/tpl/list.html</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839898862">form.admin.view.php에 formAdminView class 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839908033">formAdminView::init() 생성자</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>form 모델 객체에서&nbsp;견적서 폼 목록을 받아 tpl/list.html 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>$</b><b>output </b>= $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('<b>form_list</b>', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('<b>page_navigation</b>', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('+
'+
'list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='+
'form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서폼이 나열됩니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('','mid',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.22 06:24:50
Restore
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250839898862">form.admin.view.php에 formAdminView class 작성</a></li><li class="toc3"><a href="#h1250839908033">formAdminView::init() 생성자</a></li><li class="toc3"><a href="#h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</a></li><li class="toc3"><a href="#h1250838330707">formModel::getFormList()</a></li><li class="toc3"><a href="#h1250838496423">form/queries/getFormList.xml</a></li><li class="toc3"><a href="#h1250838568309">form/tpl/list.html</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839898862">form.admin.view.php에 formAdminView class 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839908033">formAdminView::init() 생성자</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>생성된 견적서 폼 목록을 받아 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'+
'+
'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('','+
'mid'+
',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.22 06:21:34
Restore
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250839898862">form.admin.view.php에 formAdminView class 작성</a></li><li class="toc3"><a href="#h1250839908033">formAdminView::init() 생성자</a></li><li class="toc3"><a href="#h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</a></li><li class="toc3"><a href="#h1250838330707">formModel::getFormList()</a></li><li class="toc3"><a href="#h1250838496423">form/queries/getFormList.xml</a></li><li class="toc3"><a href="#h1250838568309">form/tpl/list.html</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839898862">form.admin.view.php에 formAdminView class 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839908033">formAdminView::init() 생성자</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>생성된 견적서 폼 목록을 받아 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'+
'+
'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('','+
'mid'+
',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.21 16:44:17
Restore
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250839898862">form.admin.view.php에 formAdminView class 작성</a></li><li class="toc3"><a href="#h1250839908033">formAdminView::init() 생성자</a></li><li class="toc3"><a href="#h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</a></li><li class="toc3"><a href="#h1250838330707">formModel::getFormList()</a></li><li class="toc3"><a href="#h1250838496423">form/queries/getFormList.xml</a></li><li class="toc3"><a href="#h1250838568309">form/tpl/list.html</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839898862">form.admin.view.php에 formAdminView class 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250839908033">formAdminView::init() 생성자</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>생성된 견적서 폼 목록을 받아 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'+
'+
'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('','+
'mid'+
',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.21 16:31:20
Restore
<div class="eArea xe_content xe_dr_txt"><p>관리자 페이지의 form 모듈 부분입니다. tpl 디렉토리의 관리자용 템플릿과 form.admin.view.php, form.admin.model.php, form.admin.controller.php 를 구현할 것입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250835809144">form.admin.view.php</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838417866">formAdminView::init()</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>생성된 견적서 폼 목록을 받아 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('+
'+
'','mid',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.21 16:29:40
Restore
<div class="eArea xe_content xe_dr_txt"><p>관리자 페이지의 form 모듈 부분입니다. tpl 디렉토리의 관리자용 템플릿과 form.admin.view.php, form.admin.model.php, form.admin.controller.php 를 구현할 것입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250835809144">form.admin.view.php</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838417866">formAdminView::init()</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838405713">formAdminView::dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>생성된 견적서 폼 목록을 받아 템플릿에 전달합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838330707">formModel::getFormList()</h3></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838496423">form/queries/getFormList.xml</h3></div><div class="eArea xe_content xe_dr_txt"><p><span style="background-color: rgb(225, 225, 225);">executeQueryArray('form.getFormList', $args);</span> 에서<br>Query ID "form.getFormList" Query는<span style="font-weight: bold;"> form/queries/getFormList.xml</span> 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250838568309">form/tpl/list.html</h3></div><div class="eArea xe_content xe_dr_txt"><p>formModel::getFormList()에서 값을 받아 템플릿에 전달 위해 설정하고 tpl/list.html 로 지정 하였습니다.</p><p>Context::set(<span style="font-weight: bold;">'form_list'</span>, $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Context::set(<span style="font-weight: bold;">'page_navigation'</span>, $output-&gt;page_navigation);&nbsp;&nbsp;</p><p>$this-&gt;setTemplateFile(<span style="font-weight: bold;">'list'</span>);</p></div><div class="eArea xe_content xe_dr_txt"><p>실제 템플릿(form/tpl/list.html) 에서는 아래와 같이 구현하였습니다.<br></p><p>&nbsp;13 &lt;tbody&gt; <br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach(</span></span><span style="font-weight: bold;"><span style="background-color: rgb(225, 225, 225);">$form_list</span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);"> as $no =&gt; $val)--&gt;</span></span><br>&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr class="row{$cycle_idx}"&gt;<br>&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$no}&lt;/td&gt;<br>&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="wide"&gt;&lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('+
'+
'','mid',$val-&gt;mid)}</span></span>" title="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{htmlspecialchars($lang-&gt;cmd_view)}</span></span>"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{$val-&gt;browser_title}</span></span>&lt;/a&gt;&lt;/td&gt;<br>&nbsp;18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{zdate($val-&gt;regdate,"Y-m-d")}</span></span>&lt;/td&gt;<br>&nbsp;19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td class="nowrap"&gt;<br>&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">{getUrl('act','dispFormAdminInsert','module_srl',$val-&gt;module_srl<span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">)</span></span></span></span><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">}</span></span>" class="buttonSet buttonSetting"&gt;&lt;span&gt;{$lang-&gt;cmd_setup}&lt;/span&gt;&lt;/a&gt;<br>&nbsp;21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;22&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;23&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;24 &lt;/tbody&gt;<br><br></p></div>
sol 2009.08.21 16:11:30
Restore
<div class="eArea xe_content xe_dr_txt"><p>관리자 페이지의 form 모듈 부분입니다. tpl 디렉토리의 관리자용 템플릿과 form.admin.view.php, form.admin.model.php, form.admin.controller.php 를 구현할 것입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250835809144">form.admin.view.php</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250836425776">init()</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250837212178">dispFormAdminList() : 견적서폼 목록</h3></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /** <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $page = Context::get('page');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$page) $page = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;page = $page;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // form model에서 목록을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oFormModel = &amp;getModel('form');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oFormModel-&gt;getFormList($args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿에 전해주기 위해 set함<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('form_list', $output-&gt;data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('+
'+
'page_navigation', $output-&gt;page_navigation);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl/list.html 로 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplateFile('list');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p></div><div class="eArea xe_content xe_dr_txt"><p>form.model.php의 formModel class에 getFormList() member method를 작성합니다.<br><br></p><p>&nbsp;&nbsp;&nbsp; class formModel extends module {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getFormList($args){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = executeQueryArray('form.getFormList', $args);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $output;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; }<br><br></p></div><div class="eArea xe_content xe_dr_txt"><p>executeQueryArray('form.getFormList', $args); 에서<br>Query ID "form.getFormList" Query는 form/queries/getFormList.xml 입니다.</p><p>&lt;query id="getFormList" action="select"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tables&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table name="modules" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/tables&gt;<br>&nbsp;&nbsp;&nbsp; &lt;columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="*" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/columns&gt;<br>&nbsp;&nbsp;&nbsp; &lt;conditions&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;condition operation="equal" column="module" default="form" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/conditions&gt;<br>&nbsp;&nbsp;&nbsp; &lt;navigation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;index var="sort_index" default="module_srl" order="desc" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list_count var="list_count" default="20" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page_count var="page_count" default="10" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;page var="page" default="1" /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/navigation&gt;<br>&lt;/query&gt;</p><p>select * from xe_modules where module='form' 의 쿼리에 페이징을 위한 정보가 선언되어 있습니다.</p><p> formModel::getFormList($args) 에서 $args-&gt;page 값이 &lt;page <span style="font-weight: bold;">var="page"</span> default="1" /&gt; 를 통해 page 값이 셋팅됩니다. 마찬가지로 $args-&gt;list_count 값이 설정된다면 목록의 한 페이지에 설정된 값만큼 견적서가 나열될 것 입니다.<br></p></div>
sol 2009.08.21 15:55:49
Restore
<div class="eArea xe_content xe_dr_txt"><p>관리자 페이지의 form 모듈 부분입니다. tpl 디렉토리의 관리자용 템플릿과 form.admin.view.php, form.admin.model.php, form.admin.controller.php 를 구현할 것입니다.<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250835809144">form.admin.view.php</h3></div><div class="eArea xe_content xe_dr_txt"><p>module.xml에서 정의한 view 부분 중 'dispFormAdmin~'으로 시작하는 관리자 뷰 action과 생성자 init를 form class를 상속받는 formAdminView class에 member method로 작성합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp; class formAdminView extends form {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 목록<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminList(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 견적서(mid) 추가 폼<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminInsert(){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 확장 변수 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function dispFormAdminExtraVars() {}<br>}<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250836425776">init()</h3></div><div class="eArea xe_content xe_dr_txt"><p>init()는 XE_ROOT/classes/module/ModuleObject.class.php에서 보면 action이 들어오게 될때 act 값으로 action의 타입(model, view, controller)를 찾아 해당 class를 생성후 init()를 실행해 줍니다. 따라서 init()에서는 필요한 값을 미리 설정해 주면 차후 구현하기 편합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 초기화<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function init() {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = Context::get('module_srl');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$module_srl &amp;&amp; $this-&gt;module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_srl = $this-&gt;module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_srl', $module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module model 객체 생성 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oModuleModel = &amp;getModel('module');<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // module_srl이 넘어오면 해당 모듈의 정보(브라우져 타이틀, 관리자, 레이아웃 등 xe_modules table의 값과 정보)를 미리 구해 놓음<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($module_srl) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $module_info = $oModuleModel-&gt;getModuleInfoByModuleSrl($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;module_info = $module_info;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('module_info',$module_info);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // tpl인 관리자 템플릿으로 경로 설정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 경로를 미리 셋팅 하면 action member method에서 따로 지정할 필요가 없음.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $template_path = sprintf("%stpl/",$this-&gt;module_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setTemplatePath($template_path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br></p></div>
sol 2009.08.21 15:41:44
Restore
<div class="eArea xe_content xe_dr_txt"><p>관리자 페이지의 form 모듈 부분입니다. tpl 디렉토리의 관리자용 템플릿과 form.admin.view.php, form.admin.model.php, form.admin.controller.php 를 구현할 것입니다.<br></p></div>
sol 2009.08.21 15:21:26