Smarty ¸Þ´º¾óÀ» ¹ø¿ªÇϱâ Àü Áغñ¿îµ¿À¸·Î ¸ÕÀú ÀÌ ¹®¼¸¦ ¹ø¿ªÇØ ºÃ½À´Ï´Ù.
(¼¼½Ã°£¹Û¿¡ ¾È °É¸° ³¯¸² ¹ø¿ªÀ̶ó ¿À¿ªÀÌ ÀÖÀ» ¼öµµÀÖ½À´Ï´Ù. ^^;)
classroom¿¡ ¿Ã·Á¾ß ÇÒÁö Tip & Tech¿¡ ¿Ã·Á¾ß ÇÒÁö °í¹ÎÇÏ´Ù°¡ ±×³É À̰÷À¸·Î
¿Ã¸³´Ï´Ù.
¿ªÀÚ : Á¶ÇѼ® <sizer@systong.co.kr>
¿ªÀÚÀÇ º¯
---------
¸Þ´º¾óµµ ¾Æ´Ï°í °¡À̵åÀ̹ǷΠµÇµµ·Ï ³Ê¹« µüµüÇÏÁö ¾Ê°Ô ¿ø¹®ÀÇ ¶æÀ» ÈѼÕÇÏÁö ¾Ê´Â ¹ü
À§¿¡¼ Á÷¿ªº¸´Ù´Â ÀÇ¿ªÀ¸·Î ¹ø¿ªÇß½À´Ï´Ù(±×·± ÀÌÀ¯·Î °ÅºÏÇÑ ´À³¦À» °¡Áú ºÐµµ »ý±æÁöµµ
¸ð¸£Áö¸¸ ±×¿¡ ´ëÇØ¼´Â Ã¥ÀÓÁöÁö ¾Ê°Ú½À´Ï´Ù. À߸ø ¹ø¿ª µÈ ºÎºÐÀÇ ÀÖ´Ù¸é À§ÀÇ ¸ÞÀÏ ÁÖ
¼Ò·Î ¿¬¶ô ºÎʵ叮¸ç, Ưº°È÷ »çÀÌÆ®¿¡¼ ÂüÁ¶ÇÏ°í ½ÍÀ¸½Å ºÐÀº ¿ªÀÚÀÇ ½Å»óÀ» ±×´ë·Î À¯
ÁöÇÏ´Â ÇÑ ¾ó¸¶µçÁö °¡´ÉÇÕ´Ï´Ù(Ưº°È÷ ¿ªÀÚ¿¡°Ô Çã¶ôÀ» ¹ÞÀ» ÇÊ¿ä´Â ¾ø°í, ¾Ë·ÁÁÙ Çʿ䵵
¾øÁö¸¸, ÇØ ÁÖ¸é °í¸¿°ÚÁÒ. ^^;).
SMARTY QUICKSTART GUIDE (Smarty ºü¸£°Ô ½ÃÀÛÇϱâ)
------------------------------------------------
Smarty QuickStart Guide(Smarty ºü¸£°Ô ½ÃÀÛÇϱâ)¿¡ ¿À½Å °ÍÀ» ȯ¿µÇØ¿ä~ ÀÌ °¡À̵å´Â
Smarty¿¡ óÀ½ ¹ßÀ» Àû½Ã´Â ´ç½Å¿¡°Ô Smarty°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾È³»ÇØ ÁÙ °Å¶ø´Ï´Ù.
¿ì¸®´Â ¿©±â¼ ¸î °¡Áö °¡Á¤À» ÇØº¼ »ý°¢Àä. ´ç½ÅÀÌ ÀÌ¹Ì À¥ ¼¹ö¿¡ PHP¸¦ ¾î¶»°Ô ¼³
Ä¡ÇØ¾ß ÇÏ´ÂÁö¶ó´ø°¡, Unix ÆÄÀÏ ÆÛ¹Ì¼Çµé¿¡ ´ëÇÑ ±âÃÊÁö½ÄÀ̳ª ±×¸®°í PHP°¡ ¾î¶»°Ô µ¿ÀÛ
ÇÑ´ÙµçÁö µî¿¡ ´ëÇÑ ±âÃÊÁö½ÄÀ» °¡Áö°í ÀÖ¾î¾ß ÇϰÚÁö¿ä. ¸¸¾à ´ç½ÅÀÌ Unix ȯ°æÀÌ ¾Æ´Ñ
°÷¿¡¼ Smarty¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é ´ç½ÅÀº ÀÚ½ÅÀÇ OS¿Í °ü·ÃµÈ ÆÄÀÏ ÆÄ¹Ì¼Ç ½Ã½ºÅÛÀÌ Unix
¿Í ¾î¶² Â÷ÀÌÁ¡À» °¡Áö°í ÀÖ´ÂÁö ¾Ë°í ÀÖÀ» Çʿ䰡 ÀÖ´ä´Ï´Ù.
INSTALLATION (¼³Ä¡Çϱâ)
-----------------------
Smarty ¾ÐÃà ÆÄÀÏÀ» Ç®¸é ´ç½ÅÀº Smarty.class.php, Smarty_Compiler.class.php,
Config_File.class.php ±×¸®°í "plugins" µð·ºÅ丮 °°Àº ¿©·¯ ÆÄÀϵéÀ» º¼ ¼ö ÀÖÀ» ÅÙµ¥
¿ì¼± ÀÌ ¸ðµç ÆÄÀϵéÀ» ´ç½ÅÀÇ PHP include_path¿¡ ÁöÁ¤µÇ¾î ÀÖ´Â µð·ºÅ丮 ¾îµò°¡¿¡ ¿Å
±æ Çʿ䰡 ÀÖ¾î¿ä. ±×·¯°í ³ª¼ PHP ½ºÅ©¸³Æ®¿¡[¿ªÁÖ: ¿ø¹®¿¡¼´Â PHP ½ºÅ©¸³Æ®¶ó°í ÇÏ
´Â ´ë½Å "your application"À̶ó°í ÇßÁö¸¸, ÀÌ ÆíÀÌ ´õ ÀÌÇØ°¡ ºü¸¦ °Í °°¾Æ ÀÌ·¸°Ô ¹ø¿ª
Çß½À´Ï´Ù] require("Smarty.class.php") ¹®ÀåÀ» Àû¾îÁÖ¸é ÇØ´ç Ŭ·¡½º¸¦ ãÀ» ¼ö ÀÖ°Ô µÇ
°ÚÁö¿ä. À½, ÇÏÁö¸¸ ´Ù¸¥ ¹æ¹ýÀ¸·Î ´ç½ÅÀÇ PHP ½ºÅ©¸³Æ®¿¡ SMARTY_DIR »ó¼ö¸¦ ¼³Á¤ÇÏ´Â ¹æ
¹ýµµ ÀÖ¾î¿ä. Smarty Ŭ·¡½º ÆÄÀϵéÀÌ À§Ä¡ÇÑ ÆÐ½º°¡ ÀÖ´Â µð·ºÅ丮µéÀº ÀÌ µÎ °¡Áö ¹æ½Ä
À» »ç¿ëÇÒ ¼ö Àִµ¥, ¿©±â¼ ¸Å¿ì Áß¿äÇÑ °Í Çϳª´Â SMARTY_DIR ÆÐ½º¸¦ ÁöÁ¤ÇÒ ¶§´Â ³¡¿¡
½½·¡½¬¸¦ ²À ºÙ¿©¾ß ÇÑ´Ù´Â °ÍÀ̰ÚÁÒ!
ÀÚ ±×·³ ÀÌÁ¦ ½ÇÁ¦·Î ´ç½ÅÀÇ À¥ ¼¹öÀÇ Document Root µð·ºÅ丮 ¾îµò°¡·Î ½Ã¾ß¸¦ ¿Å°Ü º¸
µµ·Ï ÇÏÁö¿ä. ÀÌ °¡À̵忡¼´Â ´ç½ÅÀÌ À¥ ¼¹öÀÇ Document Root¿¡ ¸¸µé µð·ºÅ丮 À̸§À¸
·Î Smarty¸¦ »ç¿ëÇÒ ÅÙµ¥, ¸ðµç ÀÛ¾÷Àº ¿©±â¿¡¼ ÀÌ·ç¾îÁö°í ÀÖÀ½À» ÀØÁö ¸¶¼¼¿ä.
$> cd /home/htdocs
$> mkdir Smarty
$> cd Smarty
´ÙÀ½ Â÷·Ê´Â Smarty°¡ »ç¿ëÇÒ µð·ºÅ丮µéÀ» ¸¸µé Â÷·Ê°¡ µÇ°Ú±º¿ä.
$> mkdir templates
$> mkdir templates_c
$> mkdir configs
Smarty´Â ¾²±â°¡ °¡´ÉÇÑ templates_c µð·ºÅ丮¸¦ ÇÊ¿ä·Î ÇÑ´ä´Ï´Ù. ±×·¯¹Ç·Î ´ç¿¬È÷ ´ç½Å
Àº ÇØ´ç µð·ºÅ丮¸¦ À¥ ¼¹ö À¯Àú(º¸Åë Unix¿¡¼´Â "nobody:nobody"ÀÌ »ç¿ëµÇ°í Max OS¿¡
¼´Â "www:www"ÀÌ »ç¿ëµÇÁö¿ä.[¿ªÁÖ:·¹µåÇÞ ¸®´ª½º¿¡¼´Â "apache:apache"°¡ »ç¿ëµË´Ï´Ù])
°¡ ¾²±â°¡ °¡´ÉÇϵµ·Ï ÇØ´ç µð·ºÅ丮ÀÇ ¼ÒÀ¯ÁÖ¿Í ÆÛ¹Ì¼ÇÀ» ¾Æ·¡¿Í °°ÀÌ °íÃÄÁÖ¾î¾ß°ÚÁö¿ä.
¹°·Ð ´ç½ÅÀº 'chmod 777'À» »ç¿ëÇÒ ¼öµµ ÀÖ¾î¿ä. À½ ±×·¸Áö¸¸, ±Û½ê¿ä. ¸¹Àº »ç¿ëÀÚµéÀÌ
»ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼´Â º¸¾È ¹®Á¦µµ ÀÖ°í ÇÏ´Ï º°·Î ±ÇÀåÇÏ°í ½ÍÁö´Â ¾Ê±º¿ä. À̰Ϳ¡ ´ë
ÇØ¼´Â ¸Þ´º¾ó¿¡¼ º¸´Ù ¸¹Àº Á¤º¸¸¦ ã¾Æº¸´Â °ÍÀÌ ÁÁÀ» °Í °°±º¿ä.
$> chown nobody:nobody templates_c
$> chmod 700 templates_c
$> ls -l
drwxrwxr-x 2 user group 512 Jan 18 14:18 configs/
drwxrwxr-x 2 user group 512 Jan 18 14:18 templates/
drwx------ 2 nobody nobody 512 Jan 18 14:18 templates_c/
À§¿Í °°ÀÌ Çϰųª ´ú ¾ÈÀüÇÑ ¹æ¹ýÀ¸·Î ¾Æ·¡¿Í °°ÀÌ ÇØ ÁÙ ¼öµµ ÀÖ¾î¿ä.
$> chmod 777 templates_c
$> ls -l
drwxrwxr-x 2 user group 512 Jan 18 14:18 configs/
drwxrwxr-x 2 user group 512 Jan 18 14:18 templates/
drwxrwxrwx 2 user group 512 Jan 18 14:18 templates_c/
ÀÚ ÀÌÁ¦ ´ç½ÅÀº index.php¿Í templates/index.tplÀ̶ó´Â µÎ °³ÀÇ ÆÄÀÏÀ» ¸¸µé Â÷·Ê°¡ µÇ
¾ú³×¿ä. ¹°·Ð index.php´Â ´ç½ÅÀÇ À¥ ºê¶ó¿ìÁ®¿¡¼ ºÎ¸¦ ¼ö ÀÖ´Â °ÍÀ̾î¾ß°ÚÁö¿ä.
index.tplÀº Smarty°¡ ÅÛÇø´ ÆÄÀϷμ »ç¿ëÇÒ ÆÄÀÏÀε¥, À̰ÍÀº ºê¶ó¿ìÁ®¿¡¼ Á÷Á¢ ¿¢¼¼
½ºµÇÁö´Â ¾Ê°í, ¿ÀÁ÷ Smarty Ŭ·¡½º¿¡ ÀÇÇØ¼¸¸ Á¢±ÙµÈ´ä´Ï´Ù[¿ªÁÖ:½ÇÁ¦·Î À§¿Í °°ÀÌ ÇÏ
¸é À¥ ¼¹ö¿¡ Ưº°ÇÑ ¼³Á¤À» Ãß°¡ÇÏÁö ¾Ê´Â À¥ ºê¶ó¿ìÁ®¸¦ ÅëÇØ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù].
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
<HTML>
<TITLE>Hello</TITLE>
<BODY>
Hello, {$Name}!
</BODY>
</HTML>
ÀÚ ÀÌÁ¦ Àß ÀÛµ¿Çϰí ÀÖ´ÂÁö index.php¸¦ ´ç½ÅÀÇ À¥ ºê¶ó¿ìÁ®·ÎºÎÅÍ ºÒ·¯ º¸¼¼¿ä.
http://your.host.com/Smarty/index.php
´ç½ÅÀÇ ºê¶ó¿ìÁ®·ÎºÎÅÍ "Hello, Ned!"¸¦ º¼ ¼ö ÀÖ³ª¿ä? ±×·¸Áö ¾Ê´Ù¸é Áö±Ý±îÁö À§¿¡¼
ÇØ ¿Â °úÁ¤µéÀ» Àß µû¶ó Çß´ÂÁö »ìÆìº¸½Ã°í ´Ù½Ã ½ÃµµÇØ º¸¼¼¿ä. ¾Æ´Ï¸é ¸Þ´º¾ó¿¡ ÀÖ´Â
¼³Ä¡ ÀÛ¾÷¿¡ °üÇÑ ºÎºÐÀ» Ã¼Å©ÇØ º¸°í, ´ç½ÅÀÌ PHP ¼³Ä¡¸¦ Á¦´ë·Î Çß´ÂÁöµµ »ìÆìº¼ ÇÊ¿ä
°¡ ÀÖÀ» °Å¿¡¿ä. ±×·¡µµ ¿©ÀüÈ÷ ¹®Á¦°¡ ÀÖ´Ù¸é ¸ÞÀϸµ ¸®½ºÆ®¿¡ Áú¹®À» ´øÁ® º¸´ø°¡ FAQ
¿¡¼ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖÀ»Áöµµ ¸ð¸£°Ú³×¿ä.
ÀÌÁ¦ "Hello, Ned!"¸¦ ºê¶ó¿ìÁ®·ÎºÎÅÍ º¼ ¼ö ÀÖ´Ù±¸¿ä? ÁÁ¾Æ¿ä~[¿ªÁÖ: Â÷¹ü±Ù ½ºÅ¸ÀÏ·Î
ÀÐ¾î º¸¼¼¿ä. :)]
Smarty°¡ index.tpl¸¦ ¾î¶»°Ô php ½ºÅ©¸³Æ®·Î ÄÄÆÄÀÏÇß´ÂÁö ±Ã±ÝÇϽôٸé templates_c µð
·ºÅ丮¸¦ ã¾Æº¸½Ã¸é ¾Ë ¼ö ÀÖ¾î¿ä. Smarty´Â ÀÌ·¸°Ô ¸Ç óÀ½ Çѹø¸¸ ÄÄÆÄÀÏÇÏ°í ±× ´ÙÀ½
¿¡´Â °Ô¼Ó ÀÌ ÄÄÆÄÀÏµÈ ½ºÅ©¸³Æ®¸¦ °¡Áö°í ÀÛµ¿ÇÏ°Ô µÈ´ä´Ï´Ù. ¹°·Ð index.tplÀÌ ¹Ù²î°Ô
µÈ´Ù¸é ÀÚµ¿À¸·Î ÀçÄÄÆÄÀÏÇØ¼ ´ëüÇÏ°Ô µÇÁö¿ä[¿ªÁÖ:À̰ÍÀº JSP°¡ äÅÃÇϰí ÀÖ´Â ¹æ½Ä°ú
±²ÀåÈ÷ À¯»çÇÏ´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù].
ÀÌ·± ÀÌÀ¯·Î ´ç½ÅÀº templates_c µð·ºÅ丮¿¡ ´ëÇØ¼´Â °ü½ÉÀ» ²ô¼Åµµ ÁÁ¾Æ¿ä. ´ç½ÅÀº ÀÌ
·± ±â¼úÀû ºÎºÐ¿¡ ´ëÇØ¼ °ÆÁ¤ÇÒ Çʿ䰡 Çϳªµµ ¾ø°í, ÀÌ·± ºÎºÐÀº Smarty¿¡°Ô ¶°³Ñ°Ü ¹ö
¸®¸é µÇ¿ä. Âü, ±×¸®°í ´ç½ÅÀº ÅÛÇø´À¸·ÎºÎÅÍ ÄÄÆÄÀÏµÈ PHP ½ºÅ©¸³Æ®¸¦ º¼ ¼ö ÀÖ°í ±×°Í
À» ¾Æ¸¶ °íÄ¥ ¼öµµ ÀÖÀ» °Å¿¡¿ä ÇÏÁö¸¸, À̰͵éÀ» °íÄ¥ »ý°¢Àº Àý´ë·Î ÇÏÁö ¾Ê´Â °Ô ½Å»ó
¿¡ À̷οï Å×ÁÒ?
¿©±â±îÁö Àß µÇ¾ú´Ù¸é, ÀÌÁ¦ ´ç½ÅÀº Àß ÀÛµ¿ÇÏ´Â Smarty¸¦ °¡Áö°Ô µÇ¾úÀ¸¹Ç·Î ÀÌÁ¦
Smarty¿¡¼ »ç¿ëÇϰí ÀÖ´Â ÅÛÇø´ ¾ð¾îÀÇ Æ¯Â¡µé Áß ¸î °¡Áö¸¦ »ìÆìº¸µµ·Ï ÇÏÁö¿ä.
ASSIGNING VARIABLES (º¯¼ö ´ëÀÔ)
-------------------------------
ÅÛÇø´À¸·ÎÀÇ º¯¼ö ´ëÀÔÀº º¯¼ö¿Í °ªÀ» ½ÖÀ¸·Î ÇØ¼ Á÷Á¢ ´ëÀÔµÇ°Ô µÇ´Âµ¥, ¿¹¸¦ µé¸é ¾Æ·¡¿Í °°ÀÌ ¼Ò½º°¡ ±¸¼ºµÈ´ä´Ï´Ù.
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->assign(array(
"FirstName" => "Ned",
"LastName" => "Flanders",
"Address" => "Springfield"
));
$zipcode = "55555";
$smarty->assign("Zipcode",$zipcode);
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
<HTML>
<TITLE>Hello</TITLE>
<BODY>
Hello, {$Name}!<br>
{$FirstName}, {$LastName}<br>
{$Address}, {$Zipcode}
</BODY>
</HTML>
´ç½ÅÀº º¯¼öµéÀ» ÀÏ ´ë ÀÏ·Î ´ëÀÔÇÒ ¼öµµ ÀÖ°í, ȤÀº ¿¬°ü ¹è¿À» »ç¿ëÇÒ ¼öµµ ÀÖ°í ´ëÀÔ
µÈ º¯¼öµéÀ» Ãß°¡ÇÒ ¼öµµ Àִµ¥, À̰Ϳ¡ ´ëÇØ¼ ¸Þ´º¾ó¿¡¼ ÀÚ¼¼È÷ ¼³¸íÇØÁÖ´Ï±î ±×°ÍÀ»
ÂüÁ¶ÇÏ¸é µÇ°ÚÁö¿ä.
INCLUDE (ÅÛÇø´ Æ÷ÇÔÇϱâ)
-------------------------
ÀÌÁ¦´Â Smarty¿¡¼ ´Ù¸¥ ÅÛÇø´ ÆÄÀϵéÀ» ¾î¶»°Ô Æ÷ÇÔÇÏ´ÂÁö »ìÆìº¸µµ·Ï ÇÏÁö¿ä. À̰ÍÀº
´ç½ÅÀÌ headers³ª footers°°Àº ¹Ýº¹ÀûÀÎ ÅÛÇø´ µ¥ÀÌÅ͸¦ »ç¿ëÇÒ °æ¿ì¸¦ À§ÇÑ °ÍÀä.
À̸¦ À§Çؼ´Â templates/header.tpl°ú templates/footer°°Àº º°µµÀÇ ÅÛÇø´ ÆÄÀϵéÀ» ¸¸
µé Çʿ䰡 ÀÖ´ä´Ï´Ù.
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("Name","Ned");
$smarty->assign(array(
"FirstName" => "Ned",
"LastName" => "Flanders",
"Address" => "Springfield"
));
$zipcode = "55555";
$smarty->assign("Zipcode",$zipcode);
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
Hello, {$Name}!<br>
{$FirstName}, {$LastName}<br>
{$Address}, {$Zipcode}
{include file="footer.tpl"}
--------- templates/header.tpl --------
<HTML>
<TITLE>{$title|default:"no title"}</TITLE>
<BODY>
--------- templates/footer.tpl --------
</BODY>
</HTML>
¿ì¸®°¡ Æ÷ÇÔÇÑ header.tpl¿¡ ¾î¶»°Ô "title"À̶ó´Â º¯¼ö¸¦ ³Ñ°ÜÁÖ°í ÀÖ´ÂÁö ÁÖ¸ñÇØ º¸¼¼
¿ä. ´ç½ÅÀº ÀÌ·± ½ÄÀ¸·Î ´ç½ÅÀÌ ¿øÇÏ´Â ´õ ¸¹Àº º¯¼öµéÀ» ³Ñ°ÜÁÙ ¼ö ÀÖ¾î¿ä. Æ÷ÇÔµÈ ÅÛÇÃ
¸´ ÆÄÀϵéÀº ÇöÀç ÅÛÇø´ º¯¼öµéÀ» ¸ðµÎ ¹°·Á¹Þ°Ô µÇ°í ¶ÇÇÑ À§¿Í °°ÀÌ ³Ñ°ÜÁø º¯¼öµéµµ
°¡Áö°Ô µÇ´Âµ¥, ÀÌ·¸°Ô ³Ñ°ÜÁø º¯¼öµéÀº ¿ÀÁ÷ Æ÷ÇÔµÈ ÅÛÇø´ ÆÄÀÏ¿¡¸¸ À¯È¿ÇÑ º¯¼ö°¡ µÇ
Áö¿ä[¿ªÁÖ: ÇÔ¼ö¿¡ ³Ñ°ÜÁø º¯¼ö´Â ÇÔ¼ö ³»¿¡¼¸¸ Á¢±ÙµÇ°í ±× ´ÙÀ½ »ç¶óÁöµíÀÌ Smartyµµ
ÅÛÇø´¿¡¼ Æ÷ÇÔÇÑ ÆÄÀÏ·Î ÀÌ·ç¾îÁö´Â º¯¼ö Àü´ÞÀ» °°Àº ¹æ½ÄÀ¸·Î ó¸®ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù].
±×¸®°í templates/header.tpl¿¡¼ $title º¯¼ö¸¦ ¾î¶»°Ô Ãâ·ÂÇÏ´ÂÁöµµ ÁÖ¸ñÇÒ Çʿ䰡 ÀÖ
°ÚÁö¿ä. À̰ÍÀº "default"¶ó°í ºÒ¸®´Â º¯¼ö º¯È¯ÀÚ[¿ªÁÖ: "variable modifier"°¡ ¿ø¹®ÀÎ
µ¥ º¯¼ö ġȯÀÚ¶ó°í ÇÒ±î ÇÏ´Ù°¡ ÀÌ·¸°Ô ¹ø¿ªÇß½À´Ï´Ù]¸¦ »ç¿ëÇÑ ¸ð½ÀÀ̶ø´Ï´Ù.
{$title}À̶ó´Â ¹®ÀåÀÌ $title·Î ´ëÀÔµÈ º¯¼ö°¡ ¾øÀ¸¸é ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Âµ¥ ¹ÝÇÏ¿©
{$title|default:"no title"}À̶õ ¹®ÀåÀº $title·Î ´ëÀÔµÈ º¯¼ö°¡ ¾ø¾îµµ ¾ÕÀÇ °æ¿ìó·³
ºóµÕ°Å¸®´Â ´ë½Å "no title"À̶ó´Â Ãâ·ÂÀ» ¼öÇàÇÑ´ä´Ï´Ù.
IF/ELSEIF/ELSE
--------------
¾Æ·¡ ¿¡Á¦´Â ¸Å¿ì Á÷Á¢ÀûÀÎ ¹®¹ýÀ» º¸¿©ÁÖ°í ÀÖÀ» »ÓÀ̶ø´Ï´Ù. ¸Þ´º¾ó¿¡¼ Á» ´õ ÀÚ¼¼ÇÏ
°Ô ÀÌ ¹®¹ý¿¡ ´ëÇØ ¼³¸íÇØ Áִϱî Á» ´õ ¾Ë°í ½ÍÀº ºÐÀº ¸Þ´º¾óÀ» ÂüÁ¶Çϵµ·Ï Çϼ¼¿ä.
--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
{if $Name eq ""}
Hello, Noname!<br>
{elseif $Name eq "Ned"}
Hello, Neddy!<br>
{else}
Hello, {$Name}<br>
{/if}
{$FirstName}, {$LastName}<br>
{$Address}, {$Zipcode}
{include file="footer.tpl"}
SECTIONS: Dynamic Blocks (¼½¼Ç: µ¿Àû ºí·°)
------------------------------------------
Smarty¿¡¼ {section} ±â´ÉÀ» »ç¿ëÇÏ¸é ºñ±³Àû °£´ÜÇÏ°Ô ¹è¿µéÀ» ¹Ýº¹Çؼ Ãâ·ÂÇÒ ¼ö ÀÖ
¾î¿ä. ¿©±â¼ section¿¡´Â µÎ°¡Áö ¼Ó¼ºÀÌ ÇÊ¿ä·Î ÇÑ´ä´Ï´Ù. Çϳª´Â nameÀε¥ ¸» ±×´ë·Î
À̰ÍÀº sectionÀÇ À̸§À̶ø´Ï´Ù[¿ªÁÖ: ¾Æ·¡ ¿¹Á¦¸¦ º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸, ÀÌ name ¼Ó¼ºÀº
ÅÛÇø´ ³»¿¡¼ »ç¿ëµË´Ï´Ù]. ±×¸®°í ¶Ç ´Ù¸¥ Çϳª´Â loop¶ó´Â ¼Ó¼ºÀε¥, ÀÌ loop´Â
section¿¡¼ ¸î ¹øÀ̳ª ¹Ýº¹ÇÒ Áö ¹Ýº¹È½¼ö¸¦ ¼³¸íÇϰí ÀÖ´Â ¹è¿ÀÇ À̸§À» °¡¸®Å²´ä´Ï
´Ù[¿ªÁÖ: ¾Æ·¡ ¿¹Á¦¿¡¼ "FirstName"°ú "LastName"À̶ó´Â º¯¼ö¿Í ÇÔ²² ÁöÁ¤µÈ ¹è¿ÀÇ Å©
±â°¡ 3À̹ǷΠ3¹ø ¹Ýº¹ÇÏ°Ô µË´Ï´Ù.]
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("FirstName",array("Ned","Bart","Montgomery"));
$smarty->assign("LastName",array("Flanders","Simpson","Burns"));
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
{section name=people loop=$FirstName}
{$smarty.section.people.rownum} {$FirstName[people]} {$LastName[people]}<br>
{sectionelse}
There are no values to loop through.
{/section}
<p>
There were {$smarty.section.people.loop} names in this list.
{include file="footer.tpl"}
¿©±â¼ ÅÛÇø´ ³»¿¡¼ »ç¿ëµÈ {$smarty}¶ó´Â º¯¼ö¿¡ ´ëÇØ¼ ¼Ò°³ÇÒ Çʿ䰡 ÀÖÀ» °Í °°³×
¿ä. section ³»¿¡¼ Ãâ·ÂµÇ´Â º¯¼öµéÀ» ÁÖ¸ñÇØ º¸¼¼¿ä. ÀÌó·³ section ³»¿¡¼ Ãâ·ÂÇÒ º¯
¼öµéÀº ¸ðµÎ ¹Ýµå½Ã ¼½¼Ç À̸§À¸·Î ÂüÁ¶µÉ Çʿ䰡 ÀÖÀ½À» ÀØÁö ¸¶¼¼¿ä. À̰ÍÀº ´ç½ÅÀÌ Ãâ
·ÂÇÏ°í ½ÍÀº °ªÀ» ¹è¿¿¡¼ ÇöÀç ¹Ýº¹ Ƚ¼ö¸¦ °¡Áö°í ã±â À§ÇØ ÇÊ¿äÇÑ °Å¿¡¿ä. ¶ÇÇÑ ³»
ºÎ ÅÛÇø´ º¯¼öµéÀ» °¡Áö°í ÇöÀç ¹Ýº¹ ÁßÀÎ sectionÀÇ ÃÑ ¹Ýº¹È½¼ö¿Í ÇöÀç ¹Ýº¹ Ƚ¼ö °°
Àº °Íµµ Ãâ·ÂÀÌ °¡´ÉÇÏ´ä´Ï´Ù. {sectoinelse}µµ Áß¿äÇÑ °Çµ¥, À̰ÍÀº ¸¸ÀÏ ¹Ýº¹ÇÒ ¹è¿ÀÎ
$FirstNameÀÌ ºó ¹è¿ÀÇ °æ¿ì ´ë½Å Ãâ·ÂµÇ´Â ºÎºÐÀÌ µÈ´ä´Ï´Ù.
±×¸®°í ¾Æ·¡ ¿¹Á¦¿¡¼ »ç¿ëµÈ ¹®¹ýó·³ ¹è¿ÀÇ Å°µéÀ» °¡Áö°í Á¢±ÙÇÒ ¼öµµ ÀÖ¾î¿ä.
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign(array("ContactInfo" =>
array(
array("FirstName" => "Ned","LastName" => "Flanders"),
array("FirstName" => "Monty","LastName" => "Burns")
)
));
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
{section name=people loop=$ContactInfo}
{$ContactInfo[people].FirstName}
{$ContactInfo[people].LastName}<br>
{sectionelse}
There are no values to loop through.
{/section}
<p>
There were {$smarty.section.people.loop} names in this list.
{include file="footer.tpl"}
ȤÀº ¾Æ·¡ ¿¹Á¦Ã³·³ ´ç½ÅÀº º¹ÇÕ Áßø section ¹®À» ½ÃµµÇغ¼ ¼öµµ ÀÖ´ä´Ï´Ù.
--------- index.php --------
<?php
require("Smarty.class.php");
$smarty = new Smarty;
$smarty->assign("FirstName",array("Ned","Bart","Montgomery"));
$smarty->assign("LastName",array("Flanders","Simpson","Burns"));
$smarty->assign("ContactNames",
array(
array("email","home","cell"),
array("email","home"),
array("email","home","fax")
));
$smarty->assign("ContactVals",
array(
array("ned@simpsons.com","555-666-7777","555-444-3333"),
array("bart@simpsons.com","555-111-2222"),
array("monty@simpsons.com","555-888-9999","555-234-5678"),
));
$smarty->display("index.tpl");
?>
--------- templates/index.tpl --------
{include file="header.tpl" title="Home Page"}
{section name=people loop=$FirstName}
{$smarty.section.people.rownum} {$FirstName[people]} {$LastName[people]}<br>
{section name=contacts loop=$ContactNames[people]}
{* for fun, lets bold every other row *}
{if $smarty.section.contacts.rownum is even}<b>{/if}
{$ContactNames[people][contacts]}: {$ContactVals[people][contacts]}<br>
{if $smarty.section.contacts.rownum is even}</b>{/if}
{/section}
<br>
{sectionelse}
There are no values to loop through.
{/section}
<p>
There were {$smarty.section.people.loop} names in this list.
{include file="footer.tpl"}
FOREACH (¹Ýº¹¹®)
----------------
Ưº°È÷ ´ç½ÅÀÌ ¿ÀÁ÷ ÇÑ °¡Áö º¯¼ö¸¦ ÅëÇØ ¹Ýº¹¹®À» ¸¸µé°í ½Í´Ù¸é, ±×·± ´ç½ÅÀ» À§ÇØ Á»
´õ ½¬¿î ¹æ¹ýÀ¸·Î ¿¬°ü¹è¿À» ¹Ýº¹½Ãų ¼öµµ Àִµ¥, À̸¦ º¸¿©ÁÖ´Â ¾Æ·¡ ¿¹Á¦´Â Smarty
¿Í ÇÔ²² Á¦°øÇÏ´Â µðÆúÆ® index.php¿¡¼ ÀÛµ¿ÇÏ´Â ÅÛÇø´Àε¥,
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$smarty.foreach.outer.iteration}. contact {$key}: {$item}
{/foreach}
{foreachelse}
no contacts
{/foreach}
¿©±â¼ °¡´ÉÇÑ ¼Ó¼ºµé·Î´Â ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ¾î¿ä[¿ªÁÖ: ¾Æ·¡ÀÇ item, key, fromÀº
PHP¿¡¼´Â foreach($array as $key=>$item)¿Í °¢°¢ ´ëÀÔµÈ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù]
from: ¹Ýº¹ÀÇ ´ë»óÀÌ µÇ´Â ¹è¿
item: ¹è¿ÀÇ ÇöÀç ¿ä¼Ò¸¦ °¡¸®Å°´Â º¯¼öÀÇ À̸§
key: ¹è¿ÀÇ ÇöÀç ۸¦ °¡¸®Å°´Â º¯¼öÀÇ À̸§(¼±ÅÃÀû)
name: foreachÀÇ À̸§ (¼±ÅÃÀû)
±×¸®°í ´ç½ÅÀÌ ¸¸ÀÏ 'name'À» »ç¿ëÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ º¸´Ù ´Ù¾çÇÑ foreach ¼Ó¼ºµéÀ» Ãß
°¡ÇÒ ¼öµµ ÀÖÀ¸¸ç[¿ªÁÖ: first, last, show´Â ¹«½¼ ¼Ò¸®¸¦ Çϰí ÀÖ´ÂÁö Àß ¸ð¸£°Ú½À´Ï´Ù.
¸Þ´º¾ó¿¡µµ ÀÌ ºÎºÐÀº ¼³¸íÇÑ °Ô ¾ø°í¿ä. ½ÇÁ¦ ¿¹Á¦¸¦ ÀÛ¼ºÇØ ºÁ¾ß ¾Ë °Í °°±º¿ä. --;],
name: foreachÀÇ À̸§
iteration: ÇöÀç ¹Ýº¹ Ƚ¼ö
total: ¹Ýº¹ÇÒ Àüü Ƚ¼ö
first: if it's first iteration
last: if it's last iteration
show: if foreach was shown at all
¾Æ·¡ ÀÖ´Â ÅÛÇø´Àº foreachÀÇ ¸ðµç ¼Ó¼ºµéÀ» Ãâ·ÂÇØ ÁÖ´Â ¿¹Á¦¶ø´Ï´Ù[¿ªÁÖ:µÎ¹øÂ°
foreach ¹®Àå¿¡¼ $smarty.foreach.outer°¡ from ¼Ó¼ºÀÇ °ªÀ¸·Î ÁöÁ¤µÈ °ÍÀ» ÁÖ¸ñÇÏ
½Ã±â ¹Ù¶ø´Ï´Ù. ¿©±â¿¡ contact¸¦ ÁöÁ¤ÇÑ °æ¿ì ÀüÇô ´Ù¸¥ Ãâ·ÂÀÌ ³ª¿É´Ï´Ù].
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$smarty.foreach.outer}
{$key}: {$item}
{/foreach}
{/foreach}
ÀÚ, ÀÌÁ¦ Smarty¿¡ µé¿©³õÀº ´ç½ÅÀÇ ¹ßÀº ¾î´À Á¤µµ ÃæºÐÈ÷ Àû¼ÅÁ³À» °Å¿¡¿ä. ±×·¯³ª, ¾Æ
Á÷ config ÆÄÀÏ º¯¼öµéÀ̳ª, built-in ÇÔ¼öµé, Ä¿½ºÅÒ ÇÔ¼öµé, º¯¼ö º¯È¯ÀÚ °°Àº ±½Á÷±½
Á÷ÇÑ °øºÎ°Å¸®°¡ ³²¾Æ ÀÖ´ä´Ï´Ù. Áö±Ý ´çÀå ¸Þ´º¾óÀ» ÀÐÀ¸·¯ °¡¼¼¿ä[¿ªÁÖ: °¢Á¾ ÅÛÇø´
¶óÀ̺귯¸® Áß¿¡¼ °¡Àå ¹æ´ëÇÑ ¾çÀ» ÀÚ¶ûÇÏ´Â ¸Þ´º¾óÀÔ´Ï´Ù. ^^;]. ¸ÞÀϸµ ¸®½ºÆ®¿¡µµ
°¡ÀÔÇϽô °ÍÀÌ ÁÁ°ÚÁö¿ä. ±×·³ ¾ÕÀ¸·Îµµ Smarty¸¦ Áñ±â½Ã±â¸¦!!
¿ªÀÚ°¡ Ãß°¡ÇÑ ¹®¼ ³» ¸®¼Ò½º
Smarty À¥ »çÀÌÆ® : http://smarty.php.net
Smarty ¸ÞÀϸµ ¸®½ºÆ® ¾ÆÄ«À̺ê
ÀϹÝ: http://news.php.net/group.php?group=php.smarty.general
°³¹ß: http://news.php.net/group.php?group=php.smarty.dev
CVS: http://news.php.net/group.php?group=php.smarty.cvs
|