Template_V1

ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• v1

๋ผ์ด๋ฏน์Šค์˜ ์ „์‹ ์ธ XE 1.x์—์„œ ์‚ฌ์šฉํ•˜๋˜ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์œผ๋กœ,
๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ HTML ํƒœ๊ทธ, ์†์„ฑ, ์ฃผ์„ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค.

๋ผ์ด๋ฏน์Šค์—์„œ ์ •์‹ ์ง€์›ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๊ณ , ์ง€์›์„ ์ข…๋ฃŒํ•  ๊ณ„ํš๋„ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋”์ด์ƒ ์ƒˆ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ˆˆ์— ๋„๋Š” ๋ณ€๊ฒฝ์€ ์—†์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
ํŠน์ •ํ•œ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์‹œ ๋ฒ„๊ทธ๊ฐ€ ์žฆ๋‹ค๋Š” ์ง€์ ์ด ์˜ˆ์ „๋ถ€ํ„ฐ ์žˆ์—ˆ์ง€๋งŒ, bug-for-bug ํ˜ธํ™˜์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ผ์ด๋ฏน์Šค 2.2 ์ดํ›„ ์‹ ๊ทœ ์ž๋ฃŒ์—๋Š” ๋”์ด์ƒ v1 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

๋ณ€์ˆ˜๋‚˜ ๊ทธ ๋ฐ–์˜ PHP ํ‘œํ˜„์‹์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ํ•œ ์Œ์˜ ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

[๋ณ€์ˆ˜ ์ถœ๋ ฅ ์˜ˆ์‹œ]
{$name}
{$oDocument->getTitleText()}
{$array[$key]}

<!-- ๋ผ์ด๋ฏน์Šค 2.0.23 ์ด์ƒ ์ง€์› -->
{$object->$prop[0]}

์ฒซ ์ค‘๊ด„ํ˜ธ ์งํ›„์— ๊ณต๋ฐฑ์ด ์žˆ๊ฑฐ๋‚˜, ํ‘œํ˜„์‹ ์ค‘๊ฐ„์— ์ค„๋ฐ”๊ฟˆ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
HTML ํŒŒ์ผ์— ํ”ํžˆ ํฌํ•จ๋˜์–ด ์žˆ๋Š” JS ํ•จ์ˆ˜ ์„ ์–ธ์„ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์œผ๋กœ ์˜ค์ธํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•œ ์กฐ์น˜๋กœ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค.

[์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์˜ˆ์‹œ]
{ $name }
๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„(์Šค์ฝ”ํ”„)

ํ…œํ”Œ๋ฆฟ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” Context์—์„œ ๊ฐ€์ ธ์˜ค๊ณ , Context์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
๋ชจ๋“ˆ์ด๋‚˜ ์œ„์ ฏ ๋“ฑ์—์„œ Context::set('foo', $value)๋กœ ์…‹ํŒ…ํ•˜์˜€๊ฑฐ๋‚˜ $_GET['foo']๋กœ ๋“ค์–ด์˜จ URL ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์€
ํ…œํ”Œ๋ฆฟ์—์„œ $foo ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜๋Œ€๋กœ ํ…œํ”Œ๋ฆฟ์—์„œ $foo๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์กฐ์ž‘ํ•˜๋ฉด
๋‹ค๋ฅธ ์ž๋ฃŒ์—์„œ Context::get('foo')๋กœ ๊ทธ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์˜ˆ์‹œ์— ๋“ฑ์žฅํ•˜๋Š” $var, $oDocument, $array, $key, $object, $prop ๋“ฑ์˜ ๋ณ€์ˆ˜๋“ค์€ ๋ชจ๋‘
์‹ค์ œ๋กœ๋Š” Context::get('var'), Context::get('oDocument') ๋“ฑ์œผ๋กœ ํ•ด์„๋œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
($_SERVER ๋“ฑ์˜ ์ดˆ์ „์—ญ๋ณ€์ˆ˜์™€ $this๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.)
์ฆ‰, Context๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒ๋“ค๊ณผ ํ…œํ”Œ๋ฆฟ ์‚ฌ์ด์— ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์ด ํ•˜๋‚˜์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ณต์œ ํ•˜๋Š” ์‹œ์Šคํ…œ์€ ์ข…์ข… ๋ฒ„๊ทธ๋ฅผ ์ผ์œผํ‚ค๊ธฐ๋„ ํ•˜์ง€๋งŒ,
XE 1.x์šฉ ์ž๋ฃŒ์™€ ํ•˜์œ„ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์žฅ์น˜์ด๋ฏ€๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ ๋Œ€์‹ , ๊ณผ๊ฑฐ register_globals์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก URL ํŒŒ๋ผ๋ฏธํ„ฐ ํ•„ํ„ฐ๋ง,
์ž๋™ escape ๋“ฑ์˜ ์•ˆ์ „์žฅ์น˜๋ฅผ ๊ฐ•ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ ํ•„ํ„ฐ

๋ผ์ด๋ฏน์Šค 1.8.31 ์ด์ƒ, XE 1.11.0 ์ด์ƒ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์ณ ๊ฐ€๊ณตํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•จ์ˆ˜(ํ•จ์ˆ˜(ํ•จ์ˆ˜(๋ณ€์ˆ˜))) ํ˜•ํƒœ๋กœ ๊ฒน๊ฒน์ด ๋‘˜๋Ÿฌ์‹ธ๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•œ ํ‘œํ˜„์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ,
๋ณด์•ˆ๊ณผ ์ง๊ฒฐ๋˜๋Š” escape ์ฒ˜๋ฆฌ๋„ ์†์‰ฝ๊ฒŒ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์˜ˆ์ œ๋Š” $var๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  escapeํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

{$var|lower|escape}

์•„๋ž˜์˜ ์˜ˆ์ œ๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ํŠน์ •ํ•œ ํ˜•ํƒœ๋กœ ํฌ๋งทํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ช…๊ณผ ์˜ต์…˜์€ :์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

{$timestamp|date:'n/j H:i'}

ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• v1์—์„œ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ํ•„ํ„ฐ์˜ ๋ชฉ๋ก์€ ์•„๋ž˜์˜ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

ํ•„ํ„ฐ๋ช… ๊ธฐ๋Šฅ ์˜ต์…˜
autoescape ์ž๋™ escape (์ด์ค‘ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š์Œ)
autolang ์ž๋™ escapeํ•˜๋˜, ์–ธ์–ด์ฝ”๋“œ์ธ ๊ฒฝ์šฐ escapeํ•˜์ง€ ์•Š์Œ
escape ๊ฐ•์ œ escape (์ด์ค‘ ์ธ์ฝ”๋”ฉ)
noescape escapeํ•˜์ง€ ์•Š์Œ
escapejs JS ๋ฌธ์ž์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ escape
json JSON์œผ๋กœ ์ธ์ฝ”๋”ฉ (JS ๋ฌธ๋งฅ์—์„œ๋Š” noescape์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ)
strip strip_tags()
strip_tags strip_tags()
trim trim()
urlencode rawurlencode()
lower ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
upper ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
nl2br ๊ฐœํ–‰ ๋ฌธ์ž๋ฅผ <br>๋กœ ๋ณ€ํ™˜ (noescape ์ž๋™ ์ ์šฉ)
join ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์นจ ๊ตฌ๋ถ„์ž, ๊ธฐ๋ณธ๊ฐ’์€ ,
date ํƒ€์ž„์Šคํƒฌํ”„ ํฌ๋งท ์‚ฌ์šฉํ•  ํฌ๋งท, ๊ธฐ๋ณธ๊ฐ’์€ Y-m-d H:i:s
format ์ˆซ์ž์— ์ฒœ ๋‹จ์œ„ ์‰ผํ‘œ ํ‘œ์‹œ ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜, ๊ธฐ๋ณธ๊ฐ’์€ 0
number_format ์œ„์™€ ๊ฐ™์Œ
shorten ์ˆซ์ž๋ฅผ 123.4K์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ ์†Œ์ˆซ์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜, ๊ธฐ๋ณธ๊ฐ’์€ 2
number_shorten ์œ„์™€ ๊ฐ™์Œ
link ๋ฌธ์ž์—ด์„ ๋งํฌ๋กœ ํ‘œ์‹œ (noescape ์ž๋™ ์ ์šฉ) ๋งํฌ ํ…์ŠคํŠธ, ๊ธฐ๋ณธ๊ฐ’์€ ์›๋ณธ ๋ฌธ์ž์—ด

์กฐ๊ฑด๋ฌธ ๋ฐ ๋ฃจํ”„๋ฌธ

HTML ์ฃผ์„ ์•ˆ์— @ ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ if, for, foreach, while ๋“ฑ์˜ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฃจํ”„๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<!--@if($foo)-->
    <div class="bar"></div>
<!--@else-->
    <div class="baz"></div>
<!--@end-->

์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฃจํ”„๋ฌธ์ด ๋๋‚  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ <!--@end-->๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜, <!--@endif--> ๋˜๋Š” <!--@endforeach--> ๋“ฑ
๋ฃจํ”„์˜ ์ข…๋ฅ˜์— ๋งž๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<!--@foreach($comments as $comment)-->
    <div class="item">{$comment->getContent()}</div>
<!--@endforeach-->

ํ•œ๋•Œ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฃจํ”„๋ฌธ์„ HTML ํƒœ๊ทธ๋กœ ํ‘œํ˜„ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํ”ํžˆ "์‹ (ๆ–ฐ)๋ฌธ๋ฒ•"์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ ๋ฌธ๋ฒ•์„ ํ•ด์„ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฒ„๊ทธ๊ฐ€ ์žฆ์œผ๋ฏ€๋กœ, ๋ผ์ด๋ฏน์Šค์—์„œ๋Š” ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ๊ฐ€ ๋‹ค์†Œ ๊ธธ์–ด์ง€๋”๋ผ๋„ ์ผ๋ฐ˜์ ์ธ if๋ฌธ, foreach๋ฌธ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

[v1 ๋ณ€ํ˜• ๋ฌธ๋ฒ• (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)]
<block loop="$comments => $comment">
    <div cond="$foo" class="bar"></div>
</block>

๋‹จ, ํƒœ๊ทธ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ํ•˜๋‚˜์˜ ์†์„ฑ์„ ํ‘œ์‹œํ• ์ง€ ์ˆจ๊ธธ์ง€ ์„ ํƒํ•˜๋Š” |cond="" ๋ฌธ๋ฒ•์€ ํ•ด์„ ์˜ค๋ฅ˜๊ฐ€ ๊ฑฐ์˜ ์—†๊ณ ,
HTML ์ฝ”๋“œ ์ค‘๊ฐ„์— ๊ฑฐ์ถ”์žฅ์Šค๋Ÿฌ์šด if๋ฌธ์„ ๋ผ์›Œ๋„ฃ๋Š” ๋ถˆํŽธ์„ ํฌ๊ฒŒ ๋œ์–ด ์ค€๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์•„๋ž˜์˜ ์˜ˆ์ œ์—์„œ๋Š” $val === 'foo'๋ผ๋Š” ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ selected="selected" ์†์„ฑ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

[v1 ๋ณ€ํ˜• ๋ฌธ๋ฒ• (์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉ)]
<ul>
    <li value="foo" selected="selected"|cond="$val === 'foo'">FOO</li>
</ul>

ํ…œํ”Œ๋ฆฟ ์ธํด๋ฃจ๋“œ

๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ธํด๋ฃจ๋“œํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๊ณ , ํ™•์žฅ์ž .html์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<include target="dir/filename.html" />

๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ, "์ฒ˜์Œ"์„ ์˜๋ฏธํ•˜๋Š” ^ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
๋ผ์ด๋ฏน์Šค๊ฐ€ ์„ค์น˜๋œ ๋ฃจํŠธ ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
../../../../๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ , ํ˜„์žฌ ํ…œํ”Œ๋ฆฟ์˜ ๊ฒฝ๋กœ์™€ ๋ฌด๊ด€ํ•˜๋ฏ€๋กœ
ํŒŒ์ผ ์ด๋™ ๋“ฑ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<include target="^/common/tpl/refresh.html" />

์ธํด๋ฃจ๋“œํ•  ๋•Œ cond ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ์ธํด๋ฃจ๋“œํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<include target="../filename" cond="$foo" />

XE 1.4.4 ๋ฏธ๋งŒ ๋ฒ„์ „์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ HTML ์ฃผ์„ ํ˜•ํƒœ์˜ ์ธํด๋ฃจ๋“œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ ์ ๋„ ์žˆ์œผ๋‚˜, ๋”์ด์ƒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[v1 ์ดˆ๊ธฐ ๋ฌธ๋ฒ• (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)]
<!--#include("header.html")-->

๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ

ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค(์• ์…‹)์˜ ๋กœ๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

<script> ๋˜๋Š” <link> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JS ๋ฐ CSS ํŒŒ์ผ์„ ์ง์ ‘ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๊ณผ ์Šคํ‚จ ๋“ฑ์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ฏน์Šค์˜ ํŠน์„ฑ์ƒ,
ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”์–ด์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฝ”์–ด์˜ CSS/JS ์••์ถ• ๋ฐ ํ•ฉ์น˜๊ธฐ ๊ธฐ๋Šฅ๊ณผ ์ž๋™์œผ๋กœ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.
  • SCSS, LESS ํŒŒ์ผ์„ ๋กœ๋”ฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ๋˜๊ณ , ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • index ์†์„ฑ์œผ๋กœ ๋กœ๋”ฉ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ๋กœ๋”ฉํ•œ ํŒŒ์ผ์„ ์–ธ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
CSS, SCSS, LESS

์•„๋ž˜์™€ ๊ฐ™์ด <load> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ , ์—ฌ๋Ÿฌ ๋ถ€๊ฐ€์ ์ธ ์†์„ฑ์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • target : ๋กœ๋”ฉํ•  ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธํด๋ฃจ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜„์žฌ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ
    ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์›์น™์ด์ง€๋งŒ, ํ•„์š”์‹œ ^ ๋ฌธ์ž๋กœ ๋ผ์ด๋ฏน์Šค๊ฐ€ ์„ค์น˜๋œ ๋ฃจํŠธ ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • media : ์ด ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๊ธฐ๊ธฐ์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. screen, print, braille ๋“ฑ
  • index : ๋กœ๋”ฉ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • vars : SCSS๋‚˜ LESS์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜ ๋ชฉ๋ก (์—ฐ๊ด€๋ฐฐ์—ด ๋˜๋Š” ์˜ค๋ธŒ์ ํŠธ)
[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<load target="styles.css" />
<load target="../styles.css" media="print" index="20" />

SCSS๋‚˜ LESS๋„ ๋™์ผํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”์–ด์—์„œ ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<load target="../styles.less" />
<load target="css/styles.scss" vars="$vars" />

XE 1.4.4 ๋ฏธ๋งŒ ๋ฒ„์ „์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉํ•˜์˜€์œผ๋‚˜, ๋”์ด์ƒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[v1 ์ดˆ๊ธฐ ๋ฌธ๋ฒ• (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)]
<!--%import("dir1/dir2/styles.css")-->
JS

CSS์™€ ๋™์ผํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.

  • target : ๋กœ๋”ฉํ•  ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • type : ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ head์ž…๋‹ˆ๋‹ค.
  • head : HTML ์†Œ์Šค์˜ <head> ๋ถ€๋ถ„์— ์‚ฝ์ž…๋˜์–ด, ๋ณธ๋ฌธ ๋กœ๋”ฉ ์ „ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • body : HTML ์†Œ์Šค์˜ <body> ํ•˜๋‹จ์— ์‚ฝ์ž…๋˜์–ด, ๋ณธ๋ฌธ ๋กœ๋”ฉ ํ›„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • index : ๋กœ๋”ฉ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<load target="script.js" />
<load target="dir/script.js" type="head" />
<load target="^/common/js/script.js" type="body" index="10" />

XE 1.4.4 ๋ฏธ๋งŒ ๋ฒ„์ „์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉํ•˜์˜€์œผ๋‚˜, ๋”์ด์ƒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[v1 ์ดˆ๊ธฐ ๋ฌธ๋ฒ• (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)]
<!--%import("../script.js")-->
JS ํ”Œ๋Ÿฌ๊ทธ์ธ

CKEditor, jQuery File Upload ๋“ฑ common/js/plugins/ ํด๋”์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๋ฒ•์ด ์กด์žฌํ•˜์ง€ ์•Š์•„, XE ์ดˆ์ฐฝ๊ธฐ์˜ ์ฃผ์„ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<!--%load_js_plugin("ckeditor")-->
XML JS ํ•„ํ„ฐ

ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” XML JS ํ•„ํ„ฐ๋ฅผ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๊ฐ€์ง€ ๋ฌธ๋ฒ•์ด ์กด์žฌํ•˜๋ฉฐ, ๋ฐฑ์—”๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฃฐ์…‹(ruleset)๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ
XML JS ํ•„ํ„ฐ ์‚ฌ์šฉ์€ ๋ผ์ด๋ฏน์Šค์—์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ]
<load target="filters/insert.xml" />
<!--%import("filters/insert.xml")-->
์–ธ์–ด ํŒŒ์ผ

ํŠน์ • ๋ชจ๋“ˆ, ๋˜๋Š” ํŠน์ •ํ•œ ํด๋”์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์–ธ์–ด ํŒŒ์ผ์„ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ๋ช…๊นŒ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํด๋”๋ช…๊นŒ์ง€๋งŒ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
๋ผ์ด๋ฏน์Šค์—์„œ๋Š” lang.xml ๋Œ€์‹  ์–ธ์–ด๋ณ„ .php ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ,
์•„๋ž˜์˜ ๋‘ ๋ฒˆ์งธ ๋ฌธ๋ฒ•์€ ์‹ค์ œ๋กœ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<load target="./lang" />
[๋ฌด์˜๋ฏธํ•œ ๋ฌธ๋ฒ•]
<load target="./lang/lang.xml" />
์–ธ๋กœ๋”ฉ

CSS ๋˜๋Š” JS ํŒŒ์ผ ๋กœ๋”ฉ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋”ฉํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[v1 ๊ถŒ์žฅ ๋ฌธ๋ฒ•]
<unload target="file.js" />

XE 1.4.4 ๋ฏธ๋งŒ ๋ฒ„์ „์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉํ•˜์˜€์œผ๋‚˜, ๋”์ด์ƒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[v1 ์ดˆ๊ธฐ ๋ฌธ๋ฒ• (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)]
<!--%unload("file.js")-->

PHP ์ฝ”๋“œ ์‚ฌ์šฉ

์•„๋ž˜์™€ ๊ฐ™์ด {@ ... } ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์˜ PHP ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{@ $foo = 'bar'}

์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์•Š๋Š”๋‹ค๋ฉด ์—ฌ๋Ÿฌ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ์ž…๋ ฅํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

{@
    $foo = 'bar';
    if ($baz):
        $rhymix = true;
    endif;
}

์œ„์™€ ๊ฐ™์€ PHP ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜๋“ค๋„ ๋ชจ๋‘ Context๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ Context๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” PHP ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ผ๋ฐ˜ <?php ... ?> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
๋‹จ, ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• v1 ํŠน์„ฑ์ƒ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ์— ํ•ญ์ƒ ์ฃผ์˜ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์„

์ผ๋ฐ˜์ ์ธ HTML ์ฃผ์„์€ ๊ฒฐ๊ณผ๋ฌผ์— ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ๋ฌผ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ์ฃผ์„์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด <!--//๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ฃผ์„์€ ํ…œํ”Œ๋ฆฟ ํ•ด์„ ๊ณผ์ •์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

<!--// ์ด ์ฃผ์„์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค -->

๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

์ž๋™ escape ์„ค์ •

<config> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดํ›„์— ๋“ฑ์žฅํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ์ฝ”๋“œ(์ค‘๊ด„ํ˜ธ)์—
htmlspecialchars() ํ•จ์ˆ˜๋ฅผ ์ž๋™ ์ ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<config autoescape="on" />

ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— ์ด ํƒœ๊ทธ๋ฅผ ์“ฐ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ์ฝ”๋“œ์— ์ผ๊ด„ ์ ์šฉ๋˜๋ฏ€๋กœ,
์ผ์ผ์ด autoescape ํ•„ํ„ฐ๋ฅผ ๋ถ™์—ฌ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ถˆํŽธ์„ ๋œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ, ์ด ๋•Œ ์ ์šฉ๋˜๋Š” ํ•„ํ„ฐ๋Š” ์ด์ค‘ ์ธ์ฝ”๋”ฉ์„ ํ•˜์ง€ ์•Š๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
์ด์ค‘ ์ธ์ฝ”๋”ฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๊ฐœ๋ณ„์ ์œผ๋กœ escape ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ์ž๋™ ์กฐ์ •

ํ…œํ”Œ๋ฆฟ ์†Œ์Šค์— ํฌํ•จ๋œ ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ์˜ ์ƒ๋Œ€๊ฒฝ๋กœ๋Š” ํ•ด์„ ๊ณผ์ •์—์„œ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๋ณ€ํ™˜๋˜์–ด,
์‹ค์ œ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋‹ค์–‘ํ•œ URL์—์„œ ํ•ญ์ƒ ์ •ํ™•ํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด modules/board/skins/example/list.html์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค๋ฉด

<img src="img/icon.png" alt="์•„์ด์ฝ˜" />

ํ•ด์„ ๋ฐ ์ถœ๋ ฅ ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

<img src="/modules/board/skins/example/img/icon.png" alt="์•„์ด์ฝ˜" />

๋”ฐ๋ผ์„œ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์Šคํ‚จ ์ œ์ž‘์ž๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ์ž๋ฃŒ๋ฅผ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒฝ๋กœ์— ์„ค์น˜ํ• ์ง€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ ,
์ž๋ฃŒ ๋‚ด๋ถ€์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋งŒ ๊ฐ์•ˆํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ๋Œ€๋ถ€๋ถ„์˜ src ์†์„ฑ์— ์ ์šฉ๋˜๋ฉฐ, ๋ผ์ด๋ฏน์Šค 2.0.3 ์ดํ›„์—๋Š” srcset ์†์„ฑ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํผ ํ•„๋“œ ์ž๋™ ์ฃผ์ž…

ํ…œํ”Œ๋ฆฟ ์†Œ์Šค์— <form> ํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ, ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ๋“ค์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
XE 1.x ์‹œ์ ˆ๋ถ€ํ„ฐ ์ œ๊ณต๋˜์–ด ์˜จ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๊ณ„์† ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋‚˜, ์—ฌ๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํผ ์ œ์ถœ์— ํ•„์š”ํ•œ ํ•„๋“œ๊ฐ€ ๋ˆ„๋ฝ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์€ ์ œ์ž‘์ž์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.

ํผ์— ruleset ์†์„ฑ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ํ•ด๋‹น ๋ฃฐ์…‹์„ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.

[BEFORE]
<form method="post" ruleset="insertFoo">
    ...
</form>
[AFTER]
<form method="post">
    <input type="hidden" name="ruleset" value="insertFoo" />
    ....
</form>

ํผ์— mid์™€ act ํ•„๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ํ˜„์žฌ ํ™”๋ฉด์˜ mid์™€ act๋ฅผ ๊ธฐ์ค€์œผ๋กœ hidden input์„ ์ž๋™ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[BEFORE]
<form method="post">
    ...
</form>
[AFTER]
<form method="post">
    <input type="hidden" name="mid" value="{$mid}" />
    <input type="hidden" name="act" value="{$act}" />
    ...
</form>

ํผ์— error_return_url ํ•„๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ํ˜„์žฌ ํ™”๋ฉด์˜ ์ฃผ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ hidden input์„ ์ž๋™ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[BEFORE]
<form method="post">
    ...
</form>
[AFTER]
<form method="post">
    <input type="hidden" name="error_return_url" value="{getRequestUriByServerEnviroment()}" />
    ...
</form>

GET ์š”์ฒญ์ธ ๊ฒฝ์šฐ์—๋Š” ์ด๊ฒƒ ๋•Œ๋ฌธ์— ์›ํ•˜์ง€ ์•Š๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋•์ง€๋•์ง€ ๋ถ™์–ด์„œ URL์ด ๋”๋Ÿฌ์›Œ์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,
ํŠน์ •ํ•œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๊ธฐ๋Šฅ์„ ๋„๋Š” ๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • no-error-return-url="true" : error_return_url ํ•„๋“œ๋ฅผ ์ฃผ์ž…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • rx-autoform="false" : ํผ ํ•„๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋•๋‹ˆ๋‹ค. (๋ผ์ด๋ฏน์Šค 2.0.15 ์ด์ƒ)

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ํผ์€ ์ผ์ฒด์˜ ์ถ”๊ฐ€ ํ•„๋“œ๋ฅผ ์ฃผ์ž…ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ,
ํผ ์ œ์ถœ์‹œ /search?q=๊ฒ€์ƒ‰์–ด๋ผ๋Š” ๊น”๋”ํ•œ URL๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

<form action="/search" method="get" rx-autoform="false">
    <input type="search" name="q" value="" />
    <button type="submit">{$lang->cmd_search}</button>
</form>