XE 모듈 만들기 :: 간단한 메모장 만들기 02

지난번 글 이어서 메모장 계속 만들어 볼게요~~

XE의 주소 구조를 한번 살펴 볼게요.
'index.php?module=admin&act=dispModuleAdminContent' 이런 형태로 구성되어 있는데요.

module=admin : admin 모듈을 불러와서
act=dispModuleAdminContent : dispModuleAdminContent 라는 액션을 실행하여라
라는 형태 랍니다.

지금은 메모를 작성하는 액션을 만들어야 하니까
'index.php?module=joamemo&act=dispJoamemoWrite' 가 필요하겠네요.

액션 설정은
'모듈이름/conf/module.xml' 에서 정의 해준답니다.

<?xml version="1.0" encoding="utf-8"?>
<module>
<grants />
<permissions />
<actions>
<action name="dispJoamemoWrite" type="view" />
</actions>
<menus>
</menus>
</module>

위에 빨갛게 된 부분이 액션을 지정해준 부분이랍니다.

name : 은 액션의 이름

type : 액션의 타입과 어떤 파일에 액션이 정의 되는지

설정을 해주는 거랍니다.

 

이제 'index.php?module=joamemo&act=dispJoamemoWrite' 주소로 요청이 들어왔을 때 해야할 일을 만들어 줘볼게요.

type="view" 로 정의된 부분은

'모듈이름/모듈이름.view.php' 에 저장해주시면 된답니다.

파일 만들어 주시구요.



<?php

class JoamemoView extends joamemo{

function init(){

$template_path = sprintf("%sskins/%s/", $this->module_path, $this->module_info->skin);


if(!is_dir($template_path)||!$this->module_info->skin){

$this->module_info->skin = 'default';

$template_path = sprintf("%sskins/%s/", $this->module_path, $this->module_info->skin);

}

$this->setTemplatePath($template_path);

}


function dispJoamemoWrite(){

$this->setTemplateFile('memo_write');

}

}

?>


액션 이름으로 function 을 만들어 주면 된답니다.

위내용 처럼 저장하시고 

index.php?module=joamemo&act=dispJoamemoWrite 를 실행해 주시면

Err : './modules/joamemo/skins/default/memo_write.html' template file does not exists.

에러가 발생한답니다.

 

템플릿 파일이 없어서죠.

function init() 를 살펴보면

'모듈이름/skins/default/'를 템플릿 폴더로 사용한다 정의해 주었고

dispJoamemoWrite 에서 memo_write를 텔플릿 파일로 사용한다 했는데 이 파일이 해당 폴더에 없어서 그렇답니다.

 

그럼 '모듈이름/skins/default/memo_write.html' 파일을 만들어 주세요

 

<div>

test

</div> 

일단 이렇게 만들어서 다시

index.php?module=joa'memo&act=dispJoamemoWrite'

실행해 보시면 에러가 안나고 test 라는 글자가 나오는걸 확인하실 수 있을거에요..^^

 

자 그럼 정상적인 내용을 입력해 볼게요



<form ruleset="insertMemo" name="memo_write" method="post" action="./">

<input type="hidden" name="module" value="joamemo" />

<input type="hidden" name="act" value="procJoamemoInsert" />

<textarea name="memo_content" rows="10" cols="50"></textarea>

<input type="submit" value="등록" />

</form>


이렇게 입력하시고 저장하신후에 다시 페이지를 다시 실행해보세요.

 

 

 

이런 화면이 나온답니다.

메모를 입력할 부분이랑 등록 버튼이 생겼답니다~~

 

페이지 내용을 살펴 볼게요.

첫째줄 

ruleset="insertMemo" : insertMemo 룰셋을 적용한다는 내용입니다. 룰셋은 유효성 검사를 해주는 거구요 잠시후에 다시 알아볼게요.

둘째줄은 joamemo 라는 모듈을 사용한다는거고

셋째줄은 procJoamemoInsert 라는 액트를 실행한다는 거랍니다.

그다음은 어떤건지 쉽게 아실 수 있으실거에요.

 

자 그럼 룰셋(ruleset) 에 대해 알아볼게요.

룰셋은 입력폼의 유효성을 검사해주는 기능이랍니다.

이메일 주소를 입력하는곳은 사용자가 이메일 주소로 잘 입력을 했는지,

숫자를 입력해야 하는부분에는 숫자를 입력했는지 등을 확인해주는 기능이죠~~

아직은 ruleset="insertMemo" 이라고 입력은 해주었지만 해당 내용을 정의 해주지 않았기 때문에 등록 버튼을 누르면 다음화면으로 넘어간답니다.

룰셋 파일은 '모듈이름/ruleset/정의해준룰셋이름.xml' 에 입력 해주시면 된답니다.

위에서는 insertMemo 라는 룰셋을 사용한다고 했으니

'모듈이름/ruleset/insertMemo.Xml' 파일을 만들어 주세요.

 

<?xml version="1.0" encoding="utf-8"?>

<ruleset version="1.5.0">

<customrules />

<fields>

<field name="memo_content" required="true" />

</fields>

</ruleset> 

위에처럼 입력해주세요.

그리고 'index.php?module=joamemo&act=dispJoamemoWrite'를 다시 실행주시구요.

그리고 메모부분에는 아무 내용도 넣지 않고 등록을 눌러 보세요.

 

 

 

그럼 위처럼 "memo_content에 값을 입력해주세요." 라는 경고 창이 나오고 다음으로 진행이 안된답니다.

이제 룰셋 사용법을 조금 아시겠나요..^^

그런데 memo_content 라고 나오니 이상하죠??

이부분을 한글로 바꿔 볼께요~~

이 내용은 '모듈이름/lang/lang.xml' 파일에서 정의 해주면 된답니다.

 


<?xml version='1.0' encoding='UTF-8'?>

<lang>

<item name="memo_content">

<value xml:lang="ko"><![CDATA[메모내용]]></value>

</item>

</lang>

위 내용을 보시면 대충 감이 오실거에요..^^

memo_content 라는 항목은 "메모내용"이라는 값을 쓴다는 뜻이랍니다.

저장후에 관리자 화면에 설치된 모듈 제일 아래쪽에 보시면요.

 

캐시파일 재생성이라는 메뉴가 있답니다.

메뉴를 눌러주면 잠시기다린후 재생성 완료된 내용을 보실 수 있을거에요.

 

그런다음 메모 입력하는 페이지

'index.php?module=joamemo&act=dispJoamemoWrite'

를 다시 실행해준다음 메모 내용을 입력하지 않고 등록을 눌러보세요.

그럼 memo_content 가 미리 설정해놓은 메모내용으로 바뀐걸 확일하실 수 있으실거에요..^^


 

 

자 오늘은 메모입력 액션 만드는거랑 입력항목 만드는거 룰셋 언어설정에 대해 알아 보았구요.

다음번에 넘겨준 값을 가지고 DB에 저장하는 방법이랑 메모 리스트를 보는 방법을 알아 볼게요..^^

 

 

 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기