https://web.archive.org/web/20161129142654/http://www.xeschool.com/xe/xenote_bookmark_admininsert

BOOKMARK Module dispBookmarkAdminInsert

https://web.archive.org/web/20161129142654im_/http:/www.xeschool.com/xenote_page/images/module_mvc_dispBookmarkAdminInsert.jpg

룰셋(ruleset)을 이용한 폼(form) 검증

※ 참고자료 : http://code.google.com/p/xe-core/wiki/ValidateFormInput

v1.4 코어까지는 폼의 입력값을 확인하기 위해 필터(procFilter) 함수를 이용했다. 즉 폼을 전송하는 과정을 자바스크립트 이벤트로 처리하기 위해 아래와 같이 작성하고, 필터에 사용되는 content_insert.xml 파일을 filter 디렉터리에서 찾아 전달된 내용을 검사해 보고 만약 이상이 없다면, 필터는 폼의 값을 처리해줄 컨트롤러 파일을 호출할 액션과 처리결과를 통보 받을 수 있는 콜백함수를 함께 지정했었다.

▶ 폼에서 :

<form action="./" method="post" onsubmit="return procFilter(this, content_insert);">

▶ 필터에서 :

<filter name="content_insert" module="book" act="procBookContentWrite" confirm_msg_code="confirm_submit">
...중략
<response callback_func="completeContentInsert">
...중략

응답결과의 처리는 자바스크립트 함수를 이용해 쿼리스트링(Query string) URL 형식으로 실행할 액션을 호출하였다.

function completeContentInsert(ret_obj) {
    // ...중략
    var url = current_url.setQuery('act','dispBookContentList').setQuery('book_srl','');
    location.href = url;
}

v1.5부터는 룰셋을 이용하여 폼을 검증할 수 있다. 즉 폼의 입력값 유효성 검사(ValidateFormInput) 도구이다. 새로운 북마크 모듈(mid)을 입력하기 위해 dispBookmarkAdminInsert() 메소드를 실행하면 백엔드 템플릿 경로에서 admin_insert.html 파일을 찾아 같은 방법으로 입력폼(Form)을 출력한다. 여기까지는 변동사항이 없다. 하지만 이전과정에서 중요한 키워드는 액션콜백함수의 처리과정이다. 따라서 여기에 필터를 대신해줄 룰셋만 더한다고 생각하면 그리 어렵지 않다. XE에서 룰셋은 다음 3가지 과정으로 적용하고 사용한다.

1. 액션과 폼에서 룰셋이름(XML파일) 지정하기

이전 과정에서 검증을 위한 필터 파일은 filter 디렉터리에서 찾아 사용하였다. 같은 방법으로 ruleset 디렉터리를 만들고 그 안에 폼 검증에 사용될 룰셋이름.xml 파일을 룰셋 작성법에 맞게 작성하여 업로드한 후, 액션의 명세서를 작성해 두었던 모듈 정보 파일 module.xml의 해당하는 ①액션에 그리고 ②폼 태그에 룰셋에 사용 될 룰셋파일의 이름을 ruleset="룰셋이름" 이라고 지정한다. 룰셋의 이름은 파일의 이름과 같아야 하고 파일 확장자(.xml)는 붙이지 않는다.

▶ ① 모듈 정보 파일 module.xml 에서 지정 :

제목 없는 데이터베이스

▶ ② 폼에서 지정 :

제목 없는 데이터베이스