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

이온디

조회 수 588 추천 수 0 2022.10.06 14:41:14
이온디 *.186.100.73
이전 버전을 보고 계십니다 돌아가기

[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>

Colored by Color Scripter

cs


실행 해본 결과 순서는 뷰에서 필터로 넘어와 act로 선언 되어 있는 컨트롤러의 함수로 넘어갑니다.

컨트롤러에서 모델을 가져와 insert를 해주면서 첫번째로 데이터 체크가 일어나고 ( query문 )

이후 필터에서 한번더 데이터 검사를 하게 됩니다. ( 총 두번의 데이터 체크 )

따라서 보통 쿼리문과 필터를 통일하도록 합니다 :)

여기까지 무사히 통과했다면 callback_func을 실행 합니다.

해당 자바스크립트도 당연히 불러 와주었어야 하며 저는 뷰에서 init()함수에 아래와 같이 모두 사용해주기위해 선언해주었습니다.

1

Context::addJsFile($this->module_path.'js/admin.js');

cs


모든게 정상적으로 이루어졌다면 아마 정상적으로 작성, 삭제가 될 것입니다!


+) controller의 함수또한 conf/module.xml에 선언 해주어야 합니다 :)

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

엮인글 :
공헌자 :
이온디
도구모음