Hello,

kok nae-ga ha-myun an-dweneun MAGIC...🧚

웹 프로그래밍/PHP

[XE] 모듈 만들기 2탄 controller와 filter

✿도담도담 2018. 12. 17. 11:40

이전글 - [Web Programming/PHP] - [ XE ] 사용자 모듈 만드는 방법


지난번에 이어서 이번엔 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에 선언 해주어야 합니다 :)

+) 아직 배우고 있는 학생 그리고 신입 사원입니다. 틀린 부분이 있으면 말씀해주세요 !!