|
|
복원
<h1>[XE] 모듈 만들기 2탄 controller와 filter </h1><p><br></p><p>지난번에 이어서 이번엔 controller와 filter부분에 대해 포스팅 하려고 합니다!</p><p>이전글에서도 언급했듯이 controller는 사용자의 입력처리와 흐름 제어를 하는 친구입니다.</p><p>따라서 저는 글을 작성또는 수정할 때 그리고 삭제할 때 컨트롤러를 사용해 주었습니다.</p><p>단, xe에서는 필터라는 친구를 거쳐서 controller로 이동됩니다. ( 물론 생략 가능 ! )</p><p><br></p><p>필터는 말 그대로 데이터를 걸러 주는 친구입니다.</p><p>필수적으로 받아야하는 데이터라던지 숫자만 받아야 하는 데이터 등을 확인해주는 역할을 합니다.</p><p><br></p><p>코드로 예제를 들어보도록 하겠습니다.</p><p>우리는 form태그의<strong> 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><form action="./" method="post" onsubmit="return procFilter(this, window.insertAdminBid);"></form></p></td><td><a href="http://colorscripter.com/info#e" target="_blank">cs</a></td></tr></tbody></table></div><p><br></p><p>그 이전에 우리는 작성페이지를 불러오면서 자바스크립트를 로드하듯이 <strong>뷰에서 필터를 로드</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>//필터 설정</p><p>Context::addJsFilter($this->module_filter_path, 'insertAdminBid.xml');</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><filter name="파일명" module="모듈명" act="실행함수명"></p><p> <form></p><p> <node target="컬렴명" filter="number" maxlength="10" require="true" /></p><p> </form></p><p> </p><p> <response callback_func="작업 완료 후 자바스크립트 함수명"></p><p> <tag name="error" /></p><p> <tag name="message" /></p><p> </response></p><p></filter></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->module_path.'js/admin.js');</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 |