홈페이지를 만드는 사람들을 위한 안내서

사용자모듈만드는방법(2) (도담도담)

조회 수 22 추천 수 0 2023.06.23 10:12:49
이온디 *.186.100.73
제목 작성자 날짜
사용자모듈만드는방법(2) (도담도담) (current) 이온디 2023.06.23 10:12:49
복원
<h1>[XE] 모듈 만들기 2탄 controller와 filter&nbsp;</h1><p><br></p><p>지난번에 이어서 이번엔 controller와 filter부분에 대해 포스팅 하려고 합니다!</p><p>이전글에서도 언급했듯이 controller는&nbsp;사용자의 입력처리와 흐름 제어를 하는 친구입니다.</p><p>따라서 저는 글을 작성또는 수정할 때 그리고 삭제할 때 컨트롤러를 사용해 주었습니다.</p><p>단, xe에서는 필터라는 친구를 거쳐서 controller로 이동됩니다. ( 물론 생략 가능 ! )</p><p><br></p><p>필터는 말 그대로 데이터를 걸러 주는 친구입니다.</p><p>필수적으로 받아야하는 데이터라던지&nbsp;숫자만 받아야 하는 데이터 등을 확인해주는 역할을 합니다.</p><p><br></p><p>코드로 예제를 들어보도록 하겠습니다.</p><p>우리는 form태그의<strong>&nbsp;onsubmit속성을 이용해 제출시 필터로 가도록</strong> 경로를 잡아 줄 것입니다.</p><div class="colorscripter-code"><table cellpadding="0" cellspacing="0" class="colorscripter-code-table"><tbody><tr><td><p>1</p></td><td><p>&lt;form action=&quot;./&quot; method=&quot;post&quot; onsubmit=&quot;return&nbsp;procFilter(this,&nbsp;window.insertAdminBid);&quot;&gt;&lt;/form&gt;</p></td><td><a href="http://colorscripter.com/info#e" target="_blank">cs</a></td></tr></tbody></table></div><p><br></p><p>그 이전에 우리는 작성페이지를 불러오면서 자바스크립트를 로드하듯이 <strong>뷰에서&nbsp;필터를 로드</strong> 해주는 작업이 필요합니다!</p><div class="colorscripter-code"><table cellpadding="0" cellspacing="0" class="colorscripter-code-table"><tbody><tr><td><p>1</p><p>2</p></td><td><p>//필터&nbsp;설정</p><p>Context::addJsFilter($this-&gt;module_filter_path, &#39;insertAdminBid.xml&#39;);</p></td><td><a href="http://colorscripter.com/info#e" target="_blank">cs</a></td></tr></tbody></table></div><p><br></p><p>그럼 필터를 살펴보도록 하겠습니다.</p><p>필터는 filter라는 디렉터리 안에 xml형태로 존재합니다.</p><div class="colorscripter-code"><table cellpadding="0" cellspacing="0" class="colorscripter-code-table"><tbody><tr><td><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p><p>10</p></td><td><p>&lt;filter name=&quot;파일명&quot; module=&quot;모듈명&quot; act=&quot;실행함수명&quot;&gt;</p><p>&nbsp; &nbsp; &lt;form&gt;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;node target=&quot;컬렴명&quot; filter=&quot;number&quot; maxlength=&quot;10&quot; require=&quot;true&quot; /&gt;</p><p>&nbsp; &nbsp; &lt;/form&gt;</p><p>&nbsp; &nbsp;&nbsp;</p><p>&nbsp; &nbsp; &lt;response callback_func=&quot;작업&nbsp;완료&nbsp;후&nbsp;자바스크립트&nbsp;함수명&quot;&gt;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;tag name=&quot;error&quot; /&gt;</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;tag name=&quot;message&quot; /&gt;</p><p>&nbsp; &nbsp; &lt;/response&gt;</p><p>&lt;/filter&gt;</p><p><a href="http://colorscripter.com/info#e" target="_blank">Colored by Color Scripter</a></p></td><td><a href="http://colorscripter.com/info#e" target="_blank">cs</a></td></tr></tbody></table></div><p><br></p><p>실행 해본 결과 순서는 뷰에서 필터로 넘어와 act로 선언 되어 있는 컨트롤러의 함수로 넘어갑니다.</p><p>컨트롤러에서 모델을 가져와 insert를 해주면서 첫번째로 데이터 체크가 일어나고 ( query문 )</p><p>이후 필터에서 한번더 데이터 검사를 하게 됩니다. ( 총 두번의 데이터 체크 )</p><p>따라서 보통 쿼리문과 필터를 통일하도록 합니다 :)</p><p>여기까지 무사히 통과했다면 callback_func을 실행 합니다.</p><p>해당 자바스크립트도 당연히 불러 와주었어야 하며 저는 뷰에서 init()함수에 아래와 같이 모두 사용해주기위해 선언해주었습니다.</p><div class="colorscripter-code"><table cellpadding="0" cellspacing="0" class="colorscripter-code-table"><tbody><tr><td><p>1</p></td><td><p>Context::addJsFile($this-&gt;module_path.&#39;js/admin.js&#39;);</p></td><td><a href="http://colorscripter.com/info#e" target="_blank">cs</a></td></tr></tbody></table></div><p><br></p><p>모든게 정상적으로 이루어졌다면 아마 정상적으로 작성, 삭제가 될 것입니다!</p><p><br></p><p>+) controller의 함수또한 conf/module.xml에 선언 해주어야 합니다 :)</p><p>+) 아직 배우고 있는 학생 그리고 신입 사원입니다. 틀린 부분이 있으면 말씀해주세요 !!</p>
이온디 2022.10.06 14:41:14
도구모음