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