유용한 함수들 getUrl()

유용한 함수들

getUrl()

XE 레이아웃에 많이 쓰이는 getUrl() 함수이다. "getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다."고 설명되어 있다. 또한 인자는 (key, value)... 의 형식으로 주어져야 하고 (예... getUrl('key1','val1', 'key2', '') : key1, key2를 val1과 '' 로 변형) 아무런 인자가 없으면 argument를 제외한 url을 리턴하며 첫 인자값이 '' 이면 RequestUri에다가 추가된 args_list로 url을 만든다고 설명되어 있다.

※ NEW 개발자 메뉴얼(p.65) : XE는 현재 요청 URL에서 주어진 파라미터의 값을 변경 후 새로운 URL을 반환합니다. 만약 첫 번째 파라미터가 '' 라면 XE는 주어진 파라미터의 값만 사용해서 새로운 URL을 생성합니다.

getUrl()은 URL을 가져온다(get)는 뜻이다. 이때 URL은 XE 설정에서 입력된 기본 URL의 주소값이다.

XE에서의 변수출력은 무명함수 {...} 사이에 작성한다. 따라서 {getUrl()}이라고 작성하면 아래와 같은 URL 값을 되돌려(return) 준다.

{getUrl()}

결과값 : http://www.xeschool.com/xe/


일반적으로 링크를 클릭했을 때 처음페이지(Home)로 보내려면 다음과 같이 HTML로 작성한다.

<a href="http://www.xeschool.com/xe/">XE스쿨</a>

이것을 XE 레이아웃에서는 다음과 같이 사용하면 편리하다.

<a href="{getUrl()}">XE스쿨</a>

결과값 : <a href="http://www.xeschool.com/xe/">XE스쿨</a>

응용 : <h1><a href="{getUrl()}">로고</a></h1>


getUrl()에 인자값을 key와 value 한 쌍으로 주게 되면 결과값에 추가된 변수와 변수의 값으로 URL을 만들어 준다. 예를 들어 "로그인"을 클릭했을 때 XE 로그인 폼을 보여주려면 다음과 같이 링크를 작성해야 한다. act는 해야 할 일(action)이고 dispMemberLoginForm은 일의 내용이다.

<a href="http://www.xeschool.com/xe/?act=dispMemberLoginForm">로그인</a>

이러한 링크 형식을 XE에서는 getUrl() 함수를 이용하여 다음과 같이 작성하도록 한다.

<a href="{getUrl('act','dispMemberLoginForm')}">로그인</a>

결과값 : /xe/index.php?mid=xenote_useful_function_geturl&/xenote_page/act=dispMemberLoginForm

위 결과값을 보면 현재 모듈(mid=useful_function_geturl/지금 이 모듈페이지 아이디는 useful_function_geturl 이다)을 다시 불러와서 해야 할 일(action)을 실행하게 되는 것을 볼 수 있다. 만약 다른 모듈(mid/모듈의 아이디)에서 실행하려면 다음과 같이 원하는 모듈의 인자를 해야 할 일 앞 부분에 한 쌍으로 작성한다.

<a href="{getUrl('mid','member_page','act','dispMemberLoginForm')}">로그인</a>

결과값 : /xe/index.php?mid=xenote_useful_function_geturl&/xenote_page/mid=member_page&act=dispMemberLoginForm

이때 원하는 결과값을 얻기는 하였지만 전체 경로에 문제가 있다.(XE 동작에는 문제없이 실행된다.)
만약 첫 번째 파라미터가 '' 라면 XE는 주어진 파라미터의 값만 사용해서 새로운 URL을 생성한다는 설명을 참고하여 다음과 같이 맨 앞 부분에 빈 값을 넣어 작성한다.(홑따옴표로 띄어쓰기 없이 작성한다.)

<a href="{getUrl('','mid','member_page','act','dispMemberLoginForm')}">로그인</a>

결과값 : /xe/index.php?mid=member_page&act=dispMemberLoginForm

원하는 URL의 깔끔한 경로와 값을 얻을 수 있다. action 없이 페이지만 이동하려면 아래와 같이 응용하여 작성한다.

응용 : <a href="{getUrl('','mid','page05_07')}">스마트 헤더 로그인</a>

참고 문서 : 스마트 헤더 로그인


getUrl()에 인자를 한 쌍으로 작성하면 변수와 변수값을 보내고 받을 수 있다. 다음과 같이 변수 $a = "Xpress", 변수 $b = "Engine" 이라고 작성한다. (링크에 변수를 보내는 mid는 현재 이곳 모듈 페이지를 가리킨다.)

<a href="{getUrl('','mid','useful_function_geturl','a','Xpress','b','Engine')}">변수 보내기</a>

결과값 : /xe/index.php?mid=useful_function_geturl&a=Xpress&b=Engine

변수를 받아서 출력하는 것은 다음과 같다. 뜻은 내용물(context)에서 변수 $a의 값을 얻어(get) 출력 {...}하라!

{Context::get('a')}

변수가 여러개인 경우에는 XE 템플릿 구문을 이용해 다음과 같이 작성하여 추가한다. 출력문보다 항상 위에 있어야 한다.(얻은 변수의 값을 새로운 변수에 각각 대입한다,)

{@
$a = Context::get('a');
$b = Context::get('b');
}

링크로 받은 변수를 처리할 내용을 작성한다.

<h2>XE스쿨은 {$a} {$b}으로 홈페이지를 만듭니다.</h2>

테스트 링크 : 여기를 클릭하고 결과를 확인하세요.