2. XML Js Filter

 XML Js Filter

http://doc.zeroboard.com/classXmlJsFilter.html (클래스 구조)

 

XML JS Filter는 XML문법으로 정의되고 Javascript로 동작으로 하는 Filter의 의미입니다.
웹페이지에서 form문에서 특정 field의 not null, min/max length, value 체크등을 쉽게 하고 AJAX로 서버의 특정 Module과 Action와 통신을 하는 과정까지 모두 제어를 할 수 있습니다.

 

문법 소개 및 예제

아래는 XE내에서 실제로 사용하는 예제입니다.

  1. <filter name="insert_board" module="board" act="procBoardAdminInsertBoard" confirm_msg_code="confirm_submit" extend_filter="module.method_name">
    <form>
        <node target="mid" required="true" filter="alpha_number" />
        <node target="browser_title" required="true" maxlength="250" />
        <node target="list_count" required="true" filter="number" />
        <node target="page_count" required="true" filter="number" />
    </form>

  2. <parameter>
        <param name="board_name" target="mid" />
        <param name="module_srl" target="module_srl" />
        <param name="module_category_srl" target="module_category_srl" />
        <param name="layout_srl" target="layout_srl" />
        <param name="skin" target="skin" />
        <param name="browser_title" target="browser_title" />
        <param name="use_category" target="use_category" />
        <param name="list_count" target="list_count" />
        <param name="page_count" target="page_count" />
        <param name="is_default" target="is_default" />
        <param name="description" target="description" />
        <param name="header_text" target="header_text" />
        <param name="footer_text" target="footer_text" />
        <param name="admin_id" target="admin_id" />
        <param name="open_rss" target="open_rss" />
    </parameter>

  3. <response callback_func="completeInsertBoard">
        <tag name="error" />
        <tag name="message" />
        <tag name="module" />
        <tag name="act" />
        <tag name="page" />
        <tag name="module_srl" />
    </response>
    </filter>

 

  1. <parameter>
        <param name="field이름" target="변경하고자 하는 이름" />
    </parameter>

 

  1. <response callback_func="J/S Callback Function">
        <tag name="error" />
    </response>

 

내부 동작 방식

XML JS Filter는 템플릿 코드내에서 요청이 이루어집니다.

<!--%import("filter/test.xml")-->

 

TemplateHandler는 import되는 XML JS Filter를 보고 컴파일된 JS 파일을 찾아서 <head>..</head>사이에 script file 추가를 하게 됩니다.
이 때 언어팩과의 연동을 시도하게 되며 컴파일된 JS 파일에 JavaScript변수로 직접 메세지를 기록합니다.

컴파일 파일의 위치 : ./files/cache/js_filter_compiled/{md5(path.filtername)}.언어.compiled.js

 

템플릿에서의 실제 사용 예

  1. <!--%import("filter/test.filter")-->
    <form actoin="./" method="get" onsubmit="procFilter(this, test)">
    ...
    </form>

위에서 procFilter()는 첫번째 인자로 해당 폼의 object를 받는데 this로 지정하면 되고, 2번째 인자인 test는 적용하고자 하는 filter의 name 입니다.
이 form이 submit될때 test filter는 동작을 하게 됩니다.