¾×¼Ç ÇïÆÛ¸¦ »ç¿ëÇϸé,Zend_Controller_Action (À»)¸¦ °è½ÂÇÑ ÀÓÀÇÀÇ ¾×¼Ç ÄÜÆ®·Ñ·¯¿¡ ´ëÇØ¼ ½ÇÇà½Ã³ª ±× ¿Ü Çʿ信 µû¶ó¼ ±â´É Ãß°¡¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾×¼Ç ÇïÆÛÀÇ ¸ñÀûÀº, ¾×¼Ç ÄÜÆ®·Ñ·¯¿¡ °øÅë ±â´ÉÀ» Ãß°¡Çϱâ À§Çؼ Çϳª Çϳª Ãß»ó Ŭ·¡½º¸¦ °è½ÂÇÏ´Â ¼ö°í¸¦ »ý·«ÇÏ´Â °Í¿¡ ÀÖ½À´Ï´Ù.
¾×¼Ç ÇïÆÛ¿¡°Ô´Â ´Ù¾çÇÑ »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î,Zend_View_Helpers
(ÀÌ)³ª Zend_Controller_Plugin
(¿Í)°ú °°ÀÌ, ó¸®ÀÇ Á߸Ÿ¦ Çϱâ À§Çؼ ÀÌ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
¾×¼Ç ÇïÆÛ´Â (Zend_View_Helpers
(¿Í)°ú °°°Ô),
ÇÊ¿äÇÏ°Ô µÈ ½ÃÁ¡¿¡¼ ÀоîµéÀÏ ¼öµµ ÀÖ°í,
¸®Äù½ºÆ®½Ã (±âµ¿½Ã) (ÀÌ)³ª ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ÀÛ¼º½Ã (init())
±×¸®°í ÀоîµéÀÏ ¼öµµ ÀÖ½À´Ï´Ù.ÀÚ¼¼ÇÑ °ÍÀº, ÀÌÇÏÀÇ »ç¿ë¿¹¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
ÇïÆÛ¸¦ ÃʱâÈÇÏ·Á¸é ¸î°³ÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Çʿ信 µû¶ó¼, ¶Ç ±× ÇïÆÛÀÇ ±â´É¿¡ µû¶ó ±¸ºÐÇÏ¿© »ç¿ëÇսôÙ.
ÇïÆÛ ºê·ÎÄ¿´Â,Zend_Controller_Action
ÀÇ $_helper
¿¡ °Ý³³µË´Ï´Ù.
ÀÌ ºê·ÎÄ¿¸¦ »ç¿ëÇϰí, ÇïÆÛ¸¦ ÃëµæÇϰųª ÄÝ Çϰųª ÇÕ´Ï´Ù.
ÀÌÇÏ¿Í °°Àº ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
¸í½ÃÀûÀ¸·Î getHelper()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
ÇïÆÛÀÇ À̸§À» ÁöÁ¤Çϸé,
±× ÇïÆÛ ¿ÀºêÁ§Æ®°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù.
<?php
$flashMessenger = $this->_helper->getHelper('FlashMessenger');
$flashMessenger->addMessage('¹æ±ÝÀüÀÇ ¸®Äù½ºÆ®·Î, ÀÖ´Â °ÍÀ» Çß½À´Ï´Ù');
ÇïÆÛ ºê·ÎÄ¿ÀÇ __get()
±â´ÉÀ» »ç¿ëÇϸé,
¸¶Ä¡ ºê·ÎÄ¿ÀÇ ÇÁ·ÓÆÛƼÀÎ °Í °°ÀÌ ÇïÆÛ¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
<?php
$flashMessenger = $this->_helper->FlashMessenger;
$flashMessenger->addMessage('¹æ±ÝÀüÀÇ ¸®Äù½ºÆ®·Î, ÀÖ´Â °ÍÀ» Çß½À´Ï´Ù');
´ëºÎºÐÀÇ ¾×¼Ç ÇïÆÛ´Â
direct()
¸Þ¼Òµå¸¦ ½ÇÀåÇϰí ÀÖ¾î,
À̰ÍÀº ±× ÇïÆÛÀÇ µðÆúÆ® ¸Þ¼Òµå¸¦ ÄÝ ÇÕ´Ï´Ù.
FlashMessenger
ÀÇ ¿¹¿¡¼´Â,
addMessage()
(À»)¸¦ ÄÝ ÇÕ´Ï´Ù.
<?php
$this->_helper->FlashMessenger('¹æ±ÝÀüÀÇ ¸®Äù½ºÆ®·Î, ÀÖ´Â °ÍÀ» Çß½À´Ï´Ù');
![]() |
ÁÖÀÇ |
---|---|
ÀÌ·¯ÇÑ ¿¹´Â, ¸ðµÎ °°Àº °ÍÀ» ½Ç½ÃÇϰí ÀÖ½À´Ï´Ù. |
ÇïÆÛÀÇ ÀνºÅϽº¸¦ ¸í½ÃÀûÀ¸·Î ÀÛ¼ºÇÏ°í ½Í´Ù°í »ý°¢ÇÒÁöµµ ¸ð¸¨´Ï´Ù. ¿¹¸¦ µé¾î ¾×¼Ç ÄÜÆ®·Ñ·¯ Àܷ̿κÎÅÍ ÇïÆÛ¸¦ »ç¿ëÇÏ°í ½ÍÀºÀ̶ó°í, ¸ðµç ¾×¼ÇÀÇ ÇïÆÛ ºê·ÎÄ¿¿¡ °°Àº ÇïÆÛ¸¦ °Ç³×ÁÖ°í ½ÍÀºÀ̶ó°í ¸»ÇßÀ» °æ¿ìÀÔ´Ï´Ù. ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀº, Åë»óÀÇ PHP ÀÇ Å¬·¡½º¿Í °°½À´Ï´Ù.
Zend_Controller_Action_HelperBroker
ÇÏÁö¸¸ ÇïÆÛ ¿ÀºêÁ§Æ®³ª ±× ÆÐ½ºÀÇ µî·Ï¿¡ °üÇÑ »ó¼¼¸¦ ó¸®ÇÕ´Ï´Ù.
¶Ç, Çʿ信 µû¶ó¼ °Å±â·ÎºÎÅÍ ÇïÆÛ¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÇïÆÛ¸¦ ºê·ÎÄ¿¿¡ µî·ÏÇÏ·Á¸é
addHelper
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
<?php
Zend_Controller_Action_HelperBroker::addHelper($helper);
¹°·Ð, ÇïÆÛÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ ±×°ÍÀ» ºê·ÎÄ¿¿¡ °Ç³×Áشٰí ÇÏ´Â ÀÛ¾÷Àº
½Ã°£°ú ÀÚ¿øÀ» ¼ÒºñÇÕ´Ï´Ù.ÀÌ·¯ÇÑ ÀÛ¾÷ÀÇ ¼ö°í¸¦ ¾ÆÁÖ Á¶±Ý »ý·«Çϱâ À§ÇÑ ¸Þ¼Òµå·Î¼
addPrefix()
(¿Í)°ú
addPath()
ÇÏÁö¸¸ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
addPrefix()
(Àº)´Â Ŭ·¡½ºÀÇ ÇÁ·¹ÇȽº¸¦ ¹Þ¾Æ,
±×°ÍÀ» ±âÃÊ·Î ÇïÆÛ Ŭ·¡½ºÀÇ ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù.
ÇÁ·¹ÇȽº°¡,Zend Framework ÀÇ Å¬·¡½º ¸í¸í ±Ô¾à¿¡ µû¶ó¼ ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇϰí,
ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù.
<?php
// My/Action/Helpers/ ¿¡ ÀÖ´Â, À̸§ÀÌ My_Action_Helpers ±×¸®°í ½ÃÀ۵Ǵ ÇïÆÛ¸¦ Ãß°¡ÇÕ´Ï´Ù
Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');
addPath()
(Àº)´Â, ÃÖÃÊÀÇ Àμö¿¡ µð·ºÅ丮,
±×¸®°í µÎ¹øÂ°ÀÇ Àμö¿¡ Ŭ·¡½ºÀÇ ÇÁ·¹ÇȽº
(µðÆúÆ®´Â 'Zend_Controller_Action_Helper') (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
À̰ÍÀº, ÁöÁ¤ÇÑ µð·ºÅ丮¿¡ ÀÖ´Â ÁöÁ¤ÇÑ ÇÁ·¹ÇȽºÀÇ Å¬·¡½º¸¦ Ãß°¡ÇÕ´Ï´Ù.
<?php
// Plugins/Helpers/ ¿¡ ÀÖ´Â, À̸§ÀÌ Helper ±×¸®°í ½ÃÀ۵Ǵ ÇïÆÛ¸¦ Ãß°¡ÇÕ´Ï´Ù
Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers', 'Helper');
À̰͵éÀº Á¤Àû ¸Þ¼ÒµåÀ̹ǷÎ, ÄÜÆ®·Ñ·¯ ÃÖÀγ»ÀÇ ÀÓÀÇÀÇ Àå¼Ò¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, Çʿ信 µû¶ó¼ µ¿ÀûÀ¸·Î ÇïÆÛ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ÇïÆÛ Ŭ·¡½º°¡ ÇïÆÛ ºê·ÎÄ¿³»¿¡ Á¸ÀçÇÒÁö¸¦ Á¶»çÇÏ·Á¸é
hasHelper($name)
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.$name
¿¡´Â, ÇïÆÛÀÇ ¼îÆ® ³×ÀÓ (ÇÁ·¹ÇȽº¸¦ Á¦¿ÜÇÑ °Í)
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
<?php
// 'redirector' ÇïÆÛ°¡ ºê·ÎÄ¿¿¡ µî·ÏµÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
echo 'Redirector helper registered';
}
ÇïÆÛ ºí·Î¿ì·ÎºÎÅÍ ÇïÆÛ¸¦ ÃëµæÇÏ´Â Á¤Àû ¸Þ¼Òµå¿¡´Â, ÇÑÃþ ´õ
getExistingHelper()
(¿Í)°ú
getStaticHelper()
ÀÇ µÑÀÌ ÀÖ½À´Ï´Ù.
getExistingHelper()
(Àº)´Â, ¹ú½á ±âµ¿µÇ°í ÀÖ´ÂÁö,
ȤÀº ¸í½ÃÀûÀ¸·Î ÇïÆÛ ºê·ÎÄ¿¿¡ µî·ÏµÇ¾î ÀÖ´Â ÇïÆÛ¸¸À» ÃëµæÇÕ´Ï´Ù.
Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.
getStaticHelper()
ÇÏ
getExistingHelper()
(¿Í)°ú °°½À´Ï´Ù¸¸,
ÇïÆÛ ½ºÅÿ¡ µî·ÏµÇÁö ¾ÊÀº ÇïÆÛ¿¡ ´ëÇØ¼´Â ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ·Á°í ÇÕ´Ï´Ù.
½º½º·Î ¼³Á¤À» ÇÏ°í ½ÍÀº ÇïÆÛ¸¦ ÃëµæÇÏ·Á¸é
getStaticHelper()
ÇÏÁö¸¸ ÃßõÀÔ´Ï´Ù.
¾î´À ÂÊÀÇ ¸Þ¼Òµåµµ, Àμö´Â Çϳª »ÓÀÔ´Ï´Ù.
ÀÌ Àμö $name
¿¡´Â, ÇïÆÛÀÇ ¼îÆ® ³×ÀÓ (ÇÁ·¹ÇȽº¸¦ Á¦¿ÜÇÑ °Í)
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
<?php
// 'redirector' ÇïÆÛ°¡ ºê·ÎÄ¿¿¡ µî·ÏµÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇØ ÃëµæÇÕ´Ï´Ù
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
$redirector = Zend_Controller_Action_HelperBroker::getExistingHelper('redirector');
}
// ȤÀº, µî·ÏµÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ ½Å°æ¾²Áö ¾Ê°í ´Ü¼øÇÏ°Ô ÃëµæÇÕ´Ï´Ù
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
}
¸¶Áö¸·À¸·Î, µî·ÏÀ» ¸¶Ä£ ÇïÆÛ¸¦ ºê·ÎÄ¿·ÎºÎÅÍ »èÁ¦ÇÏ·Á¸é
removeHelper($name)
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.$name
¿¡´Â, ÇïÆÛÀÇ ¼îÆ® ³×ÀÓ (ÇÁ·¹ÇȽº¸¦ Á¦¿ÜÇÑ °Í)
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
<?php
// 'redirector' ÇïÆÛ°¡ ºê·ÎÄ¿¿¡ µî·ÏµÇ¾î ÀÖ´Â °æ¿ì¿¡´Â ±×°ÍÀ» »èÁ¦ÇÕ´Ï´Ù
if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
Zend_Controller_Action_HelperBroker::removeHelper('redirector')
}
Zend Framework ¿¡´Â, µðÆúÆ®·Î 3Á¾·ùÀÇ ¾×¼Ç ÇïÆÛ°¡ Â¥³Ö¾îÁö°í ÀÖ½À´Ï´Ù.
¼¼¼Ç ´ÜÀ§ÀÇ Ç÷¡½Ã ¸Þ¼¼Áö¸¦ Ãë±ÞÇÑ´Ù FlashMessenger
¶ó°í
¾îÇø®ÄÉÀ̼dz»¿¡¼ ³»ºÎ ȤÀº ¿ÜºÎ¿¡ÀÇ ¸®µð·ºÆ®¸¦ ½ÇÀåÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù
Redirector
, ±×¸®°í,
ÄÜÆ®·Ñ·¯³»¿¡¼ÀÇ ºä¿ÀºêÁ§Æ®ÀÇ ¼³Á¤°ú ºäÀÇ ·»´õ¸µÀ» ÀÚµ¿ÈÇÑ´Ù
ViewRenderer
ÀÔ´Ï´Ù.
ActionStack
ÇïÆÛ´Â, ¸®Äù½ºÆ®¸¦ ÇÁ·±Æ® ÄÜÆ®·Ñ·¯ÀÇ
ActionStack
Ç÷¯±× Àο¡ °Ý³³ÇÕ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,
¸®Äù½ºÆ®ÀÇ ½ÇÇà½Ã¿¡ ¾×¼ÇÀÇ Å¥¸¦ ÀÛ¼ºÇϱ⠽¬¿öÁý´Ï´Ù.
ÀÌ ÇïÆÛ´Â, ¾×¼ÇÀ» Ãß°¡ÇÒ ¶§¿¡
»õ·Î¿î ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÒ±î
¾×¼Ç/ÄÜÆ®·Ñ·¯/¸ðµâ ÀÇ ¼³Á¤À» ÁöÁ¤ÇÒ±îÀÇ ¾î´ÀÂÊÀ̵çÀ» ÀÌ¿ëÇÕ´Ï´Ù.
![]() |
ActionStack ÇïÆÛ¸¦ ±âµ¿Çϸé ActionStack Ç÷¯±× ÀÎÀÌ Ãʱâȵȴ٠|
---|---|
|
·Ê 7.2. ¾×¼Ç, ÄÜÆ®·Ñ·¯ ¹× ¸ðµâ¸í¿¡ ÀÇÇÑ Å½ºÅ©ÀÇ Ãß°¡
´Ü¼øÇÏ°Ô ¾×¼Ç°ú ÄÜÆ®·Ñ·¯ ±×¸®°í ¸ðµâ
(¹× ¿É¼ÇÀ¸·Î ¸®Äù½ºÆ® ÆÄ¶ó¹ÌÅÍ)
(À»)¸¦ ÁöÁ¤ÇØ Zend_Controller_Action::_forward()
(À»)¸¦ ÄÝ ÇÏ´Â °ÍÀÌ Á¦ÀÏ ½ÉÇÃÇÑ ¹æ¹ýÀÔ´Ï´Ù.
<?php
class FooController extends Zend_Controller_Action
{
public function barAction()
{
// 2 °³ÀÇ ¾×¼ÇÀ» ½ºÅÿ¡ °Ý³³ÇØ
// /foo/baz/bar/baz (À»)¸¦ ÄÝ ÇÕ´Ï´Ù
// (FooController::bazAction() ¿¡ ¸®Äù½ºÆ® º¯¼ö bar == baz (À»)¸¦ ÁöÁ¤ÇÑ °Í)
$this->_helper->actionStack('baz', 'foo', 'default', array('bar' => 'baz'));
// /bar/bat ÀÇ ÄÝ
// (BarController::batAction()) (À»)¸¦ Ãß°¡ÇÕ´Ï´Ù
$this->_helper->actionStack('bat', 'bar');
}
}
?>
·Ê 7.3. ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¿¡ ÀÇÇÑ Å½ºÅ©ÀÇ Ãß°¡
½Ã°£¿¡´Â ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®ÀÇ °´Ã¼ ÁöÇâÀûÀÎ ºÎºÐÀ» »ç¿ëÇÏ°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä.
±×·± °æ¿ì´Â ÀÌ ¿ÀºêÁ§Æ®¸¦ ActionStack
ÇïÆÛ¿¡°Ô °Ç³×ÁÙ ¼öµµ ÀÖ½À´Ï´Ù.
<?php
class FooController extends Zend_Controller_Action
{
public function barAction()
{
// 2 °³ÀÇ ¾×¼ÇÀ» ½ºÅÿ¡ °Ý³³ÇØ
// /foo/baz/bar/baz (À»)¸¦ ÄÝ ÇÕ´Ï´Ù
// (FooController::bazAction() ¿¡ ¸®Äù½ºÆ® º¯¼ö bar == baz (À»)¸¦ ÁöÁ¤ÇÑ °Í)
$request = clone $this->getRequest();
$request->setActionName('baz') // ÄÜÆ®·Ñ·¯³ª ¸ðµâÀº ÁöÁ¤ÇÏÁö ¾Ê°í,
->setParams(array('bar' => 'baz')); // ÇöÀçÀÇ °ªÀ» »ç¿ëÇÕ´Ï´Ù
$this->_helper->actionStack($request);
// /bar/bat ÀÇ ÄÝ
// (BarController::batAction()) (À»)¸¦ Ãß°¡ÇÕ´Ï´Ù
$request = clone $this->getRequest();
$request->setActionName('bat') // ¸ðµâÀº ÁöÁ¤ÇÏÁö ¾Ê°í,
->setControllerName('bar'); // ÇöÀçÀÇ °ªÀ» »ç¿ëÇÕ´Ï´Ù
$this->_helper->actionStack($request);
}
}
?>
FlashMessenger
ÇïÆÛ´Â,
´ÙÀ½ÀÇ ¸®Äù½ºÆ® ½Ã¿¡ À¯Àú¿¡°Ô º¸ÀÌ°Ô ÇÒ Çʿ䰡 ÀÖ´Â ¸Þ¼¼Áö¸¦ °Ç³×ÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù.
ÀÌ ±â´ÉÀ» ½ÇÇöÇϱâ À§ÇØ,FlashMessenger
ÇÏ
Zend_Session_Namespace
(À»)¸¦ »ç¿ëÇØ ¸Þ¼¼Áö¸¦ º¸°üÇϰí ÀÖ½À´Ï´Ù.
Zend_Session
(ÀÌ)³ª
Zend_Session_Namespace
(À»)¸¦ »ç¿ëÇÒ ¶§ , ±âµ¿ ÆÄÀÏÁß¿¡¼
Zend_Session::start()
(À»)¸¦ ½ÇÇàÇϵµ·Ï ÇսôÙ
(»ó¼¼ÇÑ »ç¿ë¿¹´Â Zend Session
ÀÇ ¹®¼¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).
ÀÌÇÏÀÇ »ç¿ë¿¹´Â, °¡Àå ±âº»ÀûÀÎ Ç÷¡½Ã ¸Þ½ÅÀúÀÇ »ç¿ë¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.
¾×¼Ç /some/my
ÇÏÁö¸¸ ÄÝ µÇ¸é, Ç÷¡½Ã ¸Þ¼¼Áö¿¡
"Record Saved!" ÇÏÁö¸¸ º¸Á¸µË´Ï´Ù.±×¸®°í, ±× ´ÙÀ½ÀÇ ¾×¼Ç
/some/my-next-request
¿¡ÀÇ ¸®Äù½ºÆ® ½Ã¿¡ ±×°ÍÀ» Ãëµæ
(±×¸®°í »èÁ¦) ÇÕ´Ï´Ù.
<?php
class SomeController extends Zend_Controller_Action
{
/**
* FlashMessenger
*
* @var Zend_Controller_Action_Helper_FlashMessenger
*/
protected $_flashMessenger = null;
public function init()
{
$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
$this->initView();
}
public function myAction()
{
/**
* Zend_Controller_Action_Helper_FlashMessenger
* ÀÇ ÀνºÅϽº¸¦ Çʿ信 µû¶ó¼ ÃëµæÇϱâ À§ÇÑ µðÆúÆ® ¸Þ¼Òµå
*/
$this->_flashMessenger->addMessage('Record Saved!');
}
public function myNextRequestAction()
{
$this->view->messages = $this->_flashMessenger->getMessages();
$this->render();
}
}
Redirector
ÇïÆÛ´Â,
¾îÇø®ÄÉÀ̼dz»¿¡¼ ÇÊ¿äÇÑ ¸®µð·ºÆ® 󸮿ëÀÇ ¿ÀºêÁ§Æ®·Î¼ »ç¿ëÇÕ´Ï´Ù.
_redirect()
¸Þ¼Òµå¿Í ºñ±³ÇßÀ» °æ¿ìÀÇ ÀÌÁ¡À¸·Î¼´Â,
»çÀÌÆ® Àüü·Î »ç¿ëÇÏ´Â ¼³Á¤À» »çÀü¿¡ Â¥³Ö¾î µÑ ¼ö ÀÖ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.¶Ç,
Zend_Controller_Action::_forward()
ÀÇ °æ¿ì¿Í °°°Ô, ÆíÀÔÀÇ ÀÎÅÍÆäÀ̽º
goto($action, $controller, $module, $params)
ÇÏÁö¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â Àϵµ ÀÌÁ¡ÀÌ µË´Ï´Ù.
Redirector
±×·³,
¸®µð·ºÆ®ÀÇ ¼³Á¤À» ½Ç½ÃÇÏ´Â ¸Þ¼Òµå·Î¼ ´ÙÀ½°ú °°Àº °ÍÀÌ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
setCode()
(À»)¸¦ »ç¿ëÇϰí,
¸®µð·ºÆ® ½Ã¿¡ »ç¿ëÇÑ´Ù HTTP ¸®½ºÆù½º Äڵ带 ¼³Á¤ÇÕ´Ï´Ù.
setExit()
(À»)¸¦ »ç¿ëÇϰí,
¸®µð·ºÆ®ÀÇ ´ÙÀ½¿¡ °Á¦ÀûÀ¸·Î exit()
(À»)¸¦ ½ÇÇà½Ã۵µ·Ï(µíÀÌ) ÇÕ´Ï´Ù.
µðÆúÆ®´Â true ÀÔ´Ï´Ù.
setGoto()
(À»)¸¦ »ç¿ëÇϰí,goto()
¿¡ ¾Æ¹«°Íµµ °Ç³×¹ÞÁö ¾Ê¾ÒÀ» ¶§ÀÇ µðÆúÆ®ÀÇ URL (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
Zend_Controller_Action::_forward()
ÀÇ API ÀÌ´Ù
setgoto($action, $controller = null, $module = null, array
$params = array()); (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
setGotoRoute()
(À»)¸¦ »ç¿ëÇϰí,
µî·ÏÀ» ¸¶Ä£ ·çÆ®¿¡ ÀǰÅÇß´Ù URL (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
Ű/Ä¡ ÀÇ Æä¾îÀÇ ¹è¿°ú ·çÆ®¸íÀ» °Ç³×ÁÖ¾î,
±×°ÍÀ» ±âÃÊ·Î ·çÆ®ÀÇ ÇüÅÂ¿Í Á¤ÀǷκÎÅÍ URL (À»)¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
setGotoUrl()
(À»)¸¦ »ç¿ëÇϰí,gotoUrl()
¿¡ ¾Æ¹«°Íµµ °Ç³×¹ÞÁö ¾Ê¾ÒÀ» ¶§ÀÇ µðÆúÆ®ÀÇ URL (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
URL (À»)¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿À» ¹Þ½À´Ï´Ù.
setPrependBase()
(À»)¸¦ »ç¿ëÇϰí,
setGotoUrl()
,gotoUrl()
ȤÀº gotoUrlAndExit()
±×¸®°í ÁöÁ¤Çß´Ù URL ÀÇ Àü¿¡ ¸®Äù½ºÆ®ÀÇ º£À̽º URL (À»)¸¦ Ãß°¡ÇÕ´Ï´Ù.
setUseAbsoluteUri()
(À»)¸¦ »ç¿ëÇϸé,
Redirector
ÇÏÁö¸¸ ¸®µð·ºÆ® ½Ã¿¡ Àý´ë
URL (À»)¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù.
ÀÌ ¿É¼ÇÀ» ¼³Á¤Çϸé,
$_SERVER['HTTP_HOST']
(ÀÌ)³ª
$_SERVER['SERVER_PORT']
, ±×¸®°í
$_SERVER['HTTPS']
ÀÇ ³»¿ëÀ» ±âÃÊ·Î ÇØ¼
¸®µð·ºÆ®¿ëÀÇ ¿ÏÀüÇÑ URL (À»)¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
ÀÌ ¿É¼ÇÀÇ µðÆúƮġ´Â ¿ÀÇÁÀÔ´Ï´Ù¸¸,
Àå·¡ÀÇ ¸±¸®½º¿¡¼´Â µðÆúÆ®·Î À¯È¿ÇÏ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù.
°Ô´Ù°¡ ½ÇÁ¦ÀÇ ¸®µð·ºÆ®¸¦ ÇàÇϱâ À§ÇÑ ¸Þ¼Òµå·Î¼ ÀÌÇÏÀÇ °ÍÀÌ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
goto()
(Àº)´Â,setGoto()
(_forward() ¹Ù¶÷ÀÇ API
) (À»)¸¦ ÀÌ¿ëÇØ ÀÛ¼ºÇß´Ù URL
¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.
gotoRoute()
(Àº)´Â,setGotoRoute()
(·çÆ®ÀÇ ÀÛ¼º
) (À»)¸¦ ÀÌ¿ëÇØ ÀÛ¼ºÇß´Ù URL
¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.
gotoUrl()
ÇÏ setGotoUrl()
(URL ¹®ÀÚ¿ÀÇ ÁöÁ¤
) (À»)¸¦ ÀÌ¿ëÇØ ÀÛ¼ºÇß´Ù URL
¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.
¸®µð·ºÆ®Ã³ÀÇ URL (À»)¸¦ ¾Ë·Á¸é
getRedirectUrl()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
À̰ÍÀº ¾ðÁ¦¶óµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
·Ê 7.4. ¿É¼ÇÀÇ ¼³Á¤
ÀÌ ¿¹¿¡¼´Â µðÆúÆ®ÀÇ ¿É¼ÇÀ» Á¶±Ý º¯°æÇÕ´Ï´Ù. HTTP ½ºÅ×ÀÌÅͽº Äڵ带 303 (À¸)·Î ÇØ, ¸®µð·ºÆ® ÈÄ¿¡ exit() ÇÏÁö ¾Ê°Ô Çϰí, ±×¸®°í ¸®µð·ºÆ®¶§ÀÇ µðÆúÆ® URL (À»)¸¦ ÁöÁ¤ÇØ ÀÖ½À´Ï´Ù.
<?php
class SomeController extends Zend_Controller_Action
{
/**
* Redirector - defined for code completion
*
* @var Zend_Controller_Action_Helper_Redirector
*/
protected $_redirector = null;
public function init()
{
$this->_redirector = $this->_helper->getHelper('Redirector');
// redirectorÀÇ µðÆúÆ®ÀÇ ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù
// ÀÌ ¿ÀºêÁ§Æ®´Â ÇïÆÛ ºê·ÎÄ¿¿¡ µî·ÏµÇ¹Ç·Î,
// ÀÌ ÀÌÈÄÀÇ ¸ðµç ¾×¼ÇÀ¸·Î À¯È¿°¡ µË´Ï´Ù
$this->_redirector->setCode('303')
->setExit(false)
->setGoto("this-action", "some-controller");
}
public function myAction()
{
/* ¹«¾ùÀΰ¡¸¦ ½Ç½ÃÇÕ´Ï´Ù */
// ¹æ±ÝÀü µî·ÏÇß´Ù URL ¿¡ ¸®µð·ºÆ® ÇØ, ±× ´ÙÀ½¿¡
// exit() ÇÕ´Ï´Ù
$this->_redirector->redirectAndExit();
return; // °áÄÚ ¿©±â¿¡´Â µµ´ÞÇÏÁö ¾Ê½À´Ï´Ù
}
}
·Ê 7.5. µðÆúÆ® ¼³Á¤ÀÇ »ç¿ë
ÀÌ ¿¹¿¡¼´Â µðÆúÆ® ¼³Á¤À» »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
Áï, ¸®µð·ºÆ® ÇÏÀÚ¸¶ÀÚ
exit()
ÇÏÁö¸¸ ½ÇÇàµÇ´Â °ÍÀÔ´Ï´Ù.
<?php
// ´Ù¸¥ ¿¹
class AlternativeController extends Zend_Controller_Action
{
/**
* Redirector - defined for code completion
*
* @var Zend_Controller_Action_Helper_Redirector
*/
protected $_redirector = null;
public function init()
{
$this->_redirector = $this->_helper->getHelper('Redirector');
}
public function myAction()
{
/* ¹«¾ùÀΰ¡¸¦ ½Ç½ÃÇÕ´Ï´Ù */
$this->_redirector->gotoUrl('/my-controller/my-action/param1/test/param2/test2');
return; // ¸®µð·ºÆ® ÈÄ¿¡ ÀÚµ¿ÀûÀ¸·Î exit() µÇ¹Ç·Î, °áÄÚ ¿©±â¿¡´Â µµ´ÞÇÏÁö ¾Ê½À´Ï´Ù
}
}
·Ê 7.6. goto() (À¸)·ÎÀÇ _forward() API ÀÇ »ç¿ë
goto()
ÀÇ API (Àº)´Â,
Zend_Controller_Action::_forward()
(¿Í)°ú °°Àº Çü½ÄÀÔ´Ï´Ù.´Ù¸¥ Á¡Àº, ÀÌ ¸Þ¼Òµå´Â °Ç³×¹ÞÀº ÆÄ¶ó¹ÌÅͷκÎÅÍ URL
(À»)¸¦ ÀÛ¼ºÇØ, µðÆúÆ® ¶ó¿ìÅÍÀÇ µðÆúÆ® Æ÷¸ËÀÌ´Ù
:module/:controller/:action/*
(À»)¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
¶Ç, ¾×¼Ç ÃÖÀÎÀº ¾Æ´Ï°í ¸®µð·ºÆ®¸¦ ½Ç½ÃÇÕ´Ï´Ù.
<?php
class ForwardController extends Zend_Controller_Action
{
/**
* Redirector - defined for code completion
*
* @var Zend_Controller_Action_Helper_Redirector
*/
protected $_redirector = null;
public function init()
{
$this->_redirector = $this->_helper->getHelper('Redirector');
}
public function myAction()
{
/* ¹«¾ùÀΰ¡¸¦ ½Ç½ÃÇÕ´Ï´Ù */
// ÇöÀçÀÇ ¸ðµâÀÇ 'my-controller' ÄÜÆ®·Ñ·¯ÀÇ
// 'my-action' ¾×¼Ç¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.
// ÆÄ¶ó¹ÌÅÍ´Â param1 => test,param2 => test2 µË´Ï´Ù.
$this->_redirector->goto('my-action', 'my-controller', null, array('param1' => 'test', 'param2' => 'test2'));
}
}
·Ê 7.7. gotoRoute() (À¸)·ÎÀÇ ·çÆ® ¾î¼Àºí¸®ÀÇ »ç¿ë
´ÙÀ½ÀÇ ¿¹´Â,¶ó¿ìÅÍ
ÀÇ assemble()
¸Þ¼Òµå¸¦ »ç¿ëÇϰí,
ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤ÇÑ ¿¬»ó ¹è¿¿¡ ±Ù°ÅÇÑ´Ù URL (À»)¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
´ÙÀ½°ú °°Àº ·çÆ®°¡ µî·ÏµÇ¾î ÀÖ´Â °Í°ú °¡Á¤ÇÕ´Ï´Ù.
<?php
$route = new Zend_Controller_Router_Route(
'blog/:year/:month/:day/:id',
array('controller' => 'archive', 'module' => 'blog', 'action' => 'view')
);
$router->addRoute('blogArchive', $route);
?>
year (À»)¸¦ 2006,month (À»)¸¦ 4, ±×¸®°í day (À»)¸¦ 24
(À¸)·Î¼ ¹è¿À» °Ç³×ÁÖ¸é, °á°úÀÇ URL ÇÏ
/blog/2006/4/24/42
µË´Ï´Ù.
<?php
class BlogAdminController extends Zend_Controller_Action
{
/**
* Redirector - defined for code completion
*
* @var Zend_Controller_Action_Helper_Redirector
*/
protected $_redirector = null;
public function init()
{
$this->_redirector = $this->_helper->getHelper('Redirector');
}
public function returnAction()
{
/* ¹«¾ùÀΰ¡¸¦ ½Ç½ÃÇÕ´Ï´Ù */
// blog ÀÇ °ú°Å ±â»ç¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù.URL ÇÏ
// /blog/2006/4/24/42 (ÀÌ)°¡ µË´Ï´Ù.
$this->_redirector->gotoRoute(
array('year' => 2006, 'month' => 4, 'day' => 24, 'id' => 42),
'blogArchive'
);
}
}
ViewRenderer
ÇïÆÛ´Â,
ÀÌÇÏ¿Í °°Àº ¿ä°ÇÀ» ä¿ì±â À§Çؼ ¸¸µé¾îÁø °ÍÀÔ´Ï´Ù.
ÄÜÆ®·Ñ·¯³»¿¡¼ Çϳª Çϳª ºä¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏÁö ¾Ê¾Æµµ ³¡³ªµµ·Ï(µíÀÌ) ÇÑ´Ù. ºä¿ÀºêÁ§Æ®´Â ÀÚµ¿ÀûÀ¸·Î ÄÜÆ®·Ñ·¯¿¡ µî·ÏµË´Ï´Ù.
ºä½ºÅ©¸³Æ®³ª ÇïÆÛ, ±×¸®°í ÇÊÅÍÀÇ ÆÐ½º¸¦ ÇöÀçÀÇ ¸ðµâ¿¡ ±Ù°ÅÇØ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤ÇØ, ¸ðµâ¸íÀ» ÇïÆÛ³ª ÇÊÅÍÀÇ Å¬·¡½º¸íÀÇ ¼±µÎ¿¡ ÀÚµ¿ÀûÀ¸·Î °ü·ÃÁþ´Â´Ù.
¸ðµç ÄÜÆ®·Ñ·¯¿Í ¾×¼ÇÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù ±Û·Î¹úÀÎ ºä¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÑ´Ù.
¸ðµç ÄÜÆ®·Ñ·¯·Î »ç¿ëÇÏ´Â, µðÆúÆ®ÀÇ ºä·»´Ù¸µ¿ÀÇÁ¼ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ, ÀÚµ¿ÀûÀ¸·Î ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Ãß°¡ÇÑ´Ù.
ºäÀÇ ±âÀú ÆÐ½º³ª ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ µ¶ÀÚÀûÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
![]() |
ÁÖÀÇ |
---|---|
|
![]() |
ÁÖÀÇ |
---|---|
ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎÀÇ µð½ºÆÌÄ¡ ó¸® Àü¿¡
|
¹«¾ùº¸´Ù ±âº»ÀûÀÎ »ç¿ë¹ýÀº, ´ÜÁö ViewRenderer
ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ ±×°ÍÀ» ÇïÆÛ ºê·ÎÄ¿¿¡ °Ç³×Áشٰí ÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀνºÅϽºÀÇ ÀÛ¼º°ú µî·ÏÀ» ÇÑ ¹ø¿¡ ½Ç½ÃÇÏ·Á¸é , ÇïÆÛ ºê·ÎÄ¿ÀÇ
getStaticHelper()
¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå °£´ÜÇÕ´Ï´Ù.
<?php
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ÀνºÅϽº°¡ ÃÖÃÊ·Î ÀÛ¼ºµÇ¾úÀ» ¶§¿¡,
ViewRenderer
ÇÏÁö¸¸ ºä¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
ÄÜÆ®·Ñ·¯ÀÇ ÀνºÅϽº°¡ ÀÛ¼ºµÉ ¶§¸¶´Ù,ViewRenderer
ÀÇ init()
ÇÏÁö¸¸ ÄÝ µË´Ï´Ù.
¿©±â¼ ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ºäÇÁ·ÎÆÄƼ¸¦ ¼³Á¤ÇØ,
ÇöÀçÀÇ ¸ðµâ·ÎºÎÅÍÀÇ »ó´ë ÆÐ½º¸¦ ÁöÁ¤ÇØ
addScriptPath()
(À»)¸¦ ÄÝ ÇÕ´Ï´Ù.
À̰ÍÀº ÇöÀçÀÇ ¸ðµâ¸í¿¡ ±Ù°ÅÇÑ ÇÁ·¹ÇȽº¸¦ Ŭ·¡½º¸íÀÇ ¼±µÎ¿¡ ºÙ¿© ÄÝ µÇ¹Ç·Î,
ÇïÆÛ³ª ÇÊÅÍÀÇ Å¬·¡½º¸¦ ¸ðµâ³»¿¡¼ È¿À²ÀûÀ¸·Î °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
postDispatch()
ÇÏÁö¸¸ ÄÝ µÉ ¶§¸¶´Ù, ÇöÀçÀÇ ¾×¼ÇÀÇ
render()
(À»)¸¦ ÀÚµ¿ÀûÀ¸·Î ÄÝ ÇÕ´Ï´Ù.
¿¹·Î¼ ´ÙÀ½°ú °°Àº Ŭ·¡½º¸¦ »ý°¢ÇØ º¾½Ã´Ù.
<?php
// foo ¸ðµâÀÇ ÄÜÆ®·Ñ·¯ Ŭ·¡½º
class Foo_BarController extends Zend_Controller_Action
{
// µðÆúÆ®·Î bar/index.phtml (À»)¸¦ ·»´õ¸µ ÇϹǷÎ, ƯÈ÷ ¾Æ¹«°Íµµ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù
public function indexAction()
{
}
// º¯¼ö 'foo' ÀÇ °ªÀ» 'bar' (À¸)·Î ¼³Á¤ÇØ bar/populate.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
// ºä¿ÀºêÁ§Æ®´Â ÀÌ¹Ì preDispatch() ±×¸®°í Á¤Àǵǰí ÀÖÀ¸¹Ç·Î, ÀÌ¹Ì »ç¿ë °¡´ÉÇÕ´Ï´Ù
public function populateAction()
{
$this->view->foo = 'bar';
}
}
...
// ºä½ºÅ©¸³Æ® Áß(¾È)¿¡¼´Â, ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ¾¹´Ï´Ù
<?php $this->foo(); // Foo_View_Helper_Foo::foo() (À»)¸¦ ÄÝ ÇÕ´Ï´Ù
ViewRenderer
¿¡´Â,
ºäÀÇ ¿É¼ÇÀ» ÃëµæÇϰųª ¼³Á¤ÇϰųªÇϱâ À§ÇÑ ¸Þ¼Òµåµµ dzºÎÇÏ°Ô ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
setView($view)
ÇÏ ViewRenderer
ÇÏÁö¸¸ »ç¿ëÇÏ´Â ºä¿ÀºêÁ§Æ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.
À̰ÍÀº, Ŭ·¡½ºÀÇ ÇÁ·ÓÆÛƼ $view
ÀÇ °ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
setNeverRender($flag = true)
(À»)¸¦ »ç¿ëÇϸé, ÀÚµ¿ ·»´õ¸µ ±â´ÉÀ» ÀüüÀûÀ¸·Î
(¸ðµç ÄÜÆ®·Ñ·¯¿¡ ´ëÇØ¼) ¹«È¿·Î Çϰųª À¯È¿ÇÏ°Ô Çϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù.
true (À»)¸¦ ÁöÁ¤Çϸé, ±× ÄÜÆ®·Ñ·¯ÀÇ postDispatch()
±×·³ render()
(À»)¸¦ ÄÝ ÇÏÁö ¾Ê°Ô µË´Ï´Ù.
getNeverRender()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
setNoRender($flag = true)
(À»)¸¦ »ç¿ëÇϸé, ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î Çϰųª À¯È¿ÇÏ°Ô Çϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù.
true (À»)¸¦ ÁöÁ¤Çϸé, ÇöÀçÀÇ ÄÜÆ®·Ñ·¯ÀÇ postDispatch()
±×·³ render()
(À»)¸¦ ÄÝ ÇÏÁö ¾Ê°Ô µË´Ï´Ù.
ÀÌ ¼³Á¤Àº,preDispatch()
ÇÏÁö¸¸ ÄÝ µÉ ¶§¸¶´Ù ÀÏ´Ü ¸®¼ÂÆ® µË´Ï´Ù
(Áï, ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î ÇÏ°í ½ÍÀº ¸ðµç ÄÜÆ®·Ñ·¯·Î
°³°³¿¡ À̰ÍÀ» ¼³Á¤ÇÒ Çʿ䰡 ÀÖ´Â °ÍÀÔ´Ï´Ù).
getNoRender()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
setNoController($flag = true)
(À»)¸¦ »ç¿ëÇϸé,render()
ÇÏÁö¸¸ ÄÜÆ®·Ñ·¯¸íÀÇ ¼ºê µð·ºÅ丮¿¡ ÀÖ´Â ¾×¼Ç ½ºÅ©¸³Æ®¸¦
ÀÐÀ¸·¯ °¡Áö ¾Ê°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù (µðÆúÆ®¿¡¼´Â ÀÐÀ¸·¯ °©´Ï´Ù).
getNoController()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
setNeverController($flag = true)
ÇÏ setNoController()
(¿Í)°ú ´à¾Æ ÀÖ½À´Ï´Ù¸¸,
ÀÌÂÊÀº Àüü¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.Áï,
µð½ºÆÌÄ¡ 󸮸¦ ½Ç½ÃÇØµµ ¼³Á¤Àº ¸®¼ÂÆ® µÇÁö ¾Ê½À´Ï´Ù.
getNeverController()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
setScriptAction($name)
(À»)¸¦ »ç¿ëÇϸé, ·»´õ¸µ ÇÏ´Â ¾×¼Ç ½ºÅ©¸³Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
$name
(Àº)´Â, ½ºÅ©¸³Æ®¸íÀ¸·ÎºÎÅÍ È®ÀåÀÚ(extension)¸¦ Á¦¿ÜÇÑ °Í
(±×¸®°í,noController
ÇÏÁö¸¸ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº ÇÑ,
ÄÜÆ®·Ñ·¯ÀÇ µð·ºÅ丮¸íµµ Á¦¿ÜÇÑ °Í) µË´Ï´Ù.
ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®³»ÀÇ ¾×¼Ç¿¡ ±Ù°ÅÇÑ À̸§ÀÇ
ºä½ºÅ©¸³Æ®¸¦ ã½À´Ï´Ù.
getScriptAction()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
setResponseSegment($name)
(À»)¸¦ »ç¿ëÇϸé, ·»´õ¸µ °á°ú¸¦ Ãâ·ÂÇÑ´Ù
¸®½ºÆù½º ¿ÀºêÁ§Æ®ÀÇ ¼¼±×¸ÕÆ®(segment)¸íÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â, µðÆúÆ®ÀÇ ¼¼±×¸ÕÆ®(segment)¿¡ ·»´õ¸µ ÇÕ´Ï´Ù.
getResponseSegment()
(Àº)´Â, ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÕ´Ï´Ù.
initView($path, $prefix, $options
(Àº)´Â, ºäÀÇ ±âÀú ÆÐ½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¶Ç, ÇïÆÛ ½ºÅ©¸³Æ®¿Í ÇÊÅÍ ½ºÅ©¸³Æ®ÀÇ ¼±µÎ¿¡ ºÙÀÌ´Â Äí¶ó½ºÇÁ·¹ÇȽº³ª
ViewRenderer
ÀÇ ¿É¼Çµµ ¼³Á¤ÇÕ´Ï´Ù.
¿É¼Ç¿¡´Â,
neverRender
,noRender
,
noController
,scriptAction
¹× responseSegment
ÀÇ ¸î°³ÀÇ Ç÷¡±×¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
setRender($action = null, $name = null, $noController
= false)
(À»)¸¦ »ç¿ëÇϸé,scriptAction
(ÀÌ)³ª responseSegment
±×¸®°í noController
ÀÇ ¾ðÁ¨°¡ ¶Ç´Â º¹¼ö¸¦
ÇÑ ¹øÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.direct()
(Àº)´Â ÀÌ ¸Þ¼ÒµåÀÇ ¾Ù¸®¾î½º(alias)·Î, ÄÜÆ®·Ñ·¯³»·ÎºÎÅÍ °£´ÜÇÏ°Ô ÄÝ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
// ÇöÀçÀÇ ¾×¼Ç ½ºÅ©¸³Æ®´Â ¾Æ´Ï°í 'foo' (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
$this->_helper->viewRenderer('foo');
// form.phtml ÀÇ ³»¿ëÀ» ¸®½ºÆù½º ¼¼±×¸ÕÆ®(segment) 'html' ¿¡ ·»´õ¸µ ÇÕ´Ï´Ù.
// ÄÜÆ®·Ñ·¯ÀÇ ºä½ºÅ©¸³Æ®¿ë ¼ºê µð·ºÅ丮´Â »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
$this->_helper->viewRenderer('form', 'html', true);
![]() |
ÁÖÀÇ |
---|---|
|
constructor¡¡ ¡¡ ÀÇ ¿É¼ÇÀ¸·Î¼
ºä¿ÀºêÁ§Æ®¸¦ °Ç³×Áְųª ViewRenderer
ÀÇ ¿É¼ÇÀ» °Ç³×Áְųª ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â °ÍÀº,initView()
±×¸®°í ¼³¸íÇÑ Ç÷¡±×¿Í °°Àº °ÍÀÔ´Ï´Ù.
$view = new Zend_View(array('encoding' => 'UTF-8'));
$options = array('noController' => true, 'neverRender' => true);
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view, $options);
ÇÑÃþ ´õ Ãß°¡ÀÇ ¸Þ¼Òµå°¡ ÀÖ¾î, ºä¿ÀºêÁ§Æ®·Î »ç¿ëÇÏ´Â ºäÀÇ ±âÀú ÆÐ½º¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç, ºä½ºÅ©¸³Æ®°¡ ÀÚµ¿ ·»´õ¸µÀ» ½Ç½ÃÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÐ½ºµµ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå¿¡¼´Â, ÀÌÇÏÀÇ Ç÷¹À̽ºÈ¦´õÀÇ ¾ðÁ¨°¡ ȤÀº º¹¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
:moduleDir
(Àº)´Â, ÇöÀçÀÇ ¸ðµâÀÇ ±âÀú µð·ºÅ丮¸¦ °¡¸®Åµ´Ï´Ù
(±Ô¾à¿¡¼´Â, À̰ÍÀº ¸ðµâÀÇ ÄÜÆ®·Ñ·¯ µð·ºÅ丮ÀÇ Ä£µð·ºÅ丮°¡ µË´Ï´Ù).
:module
(Àº)´Â, ÇöÀçÀÇ ¸ðµâ¸íÀ» °¡¸®Åµ´Ï´Ù.
:controller
(Àº)´Â, ÇöÀçÀÇ ÄÜÆ®·Ñ·¯¸íÀ» °¡¸®Åµ´Ï´Ù.
:action
(Àº)´Â, ÇöÀçÀÇ ¾×¼Ç¸íÀ» °¡¸®Åµ´Ï´Ù.
:suffix
(Àº)´Â, ºä½ºÅ©¸³Æ®ÀÇ »çÇȽº
(setViewSuffix()
±×¸®°í ¼³Á¤ÇÑ °Í) (À»)¸¦ °¡¸®Åµ´Ï´Ù.
ÆÐ½º ÁöÁ¤À» Á¦¾îÇÏ´Â ¸Þ¼Òµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.
setViewBasePathSpec($spec)
(Àº)´Â, ºä¿ÀºêÁ§Æ®¸¦ Ãß°¡ÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ±âÀú ÆÐ½º¸¦
°áÁ¤ÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÐ½º ÁöÁ¤À» º¯°æÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ ¼³Á¤Àº :moduleDir/views
ÀÔ´Ï´Ù.
ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÏ·Á¸é
getViewBasePathSpec()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
setViewScriptPathSpec($spec)
(Àº)´Â, °³°³ÀÇ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º
((À¸)·ÎºÎÅÍ ºä½ºÅ©¸³Æ®ÀÇ ±âÀú ÆÐ½º¸¦ Á¦¿ÜÇÑ ºÎºÐ)
(À»)¸¦ °áÁ¤ÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÐ½º ÁöÁ¤À» º¯°æÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ ¼³Á¤Àº :controller/:action.:suffix
ÀÔ´Ï´Ù.
ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÏ·Á¸é
getViewScriptPathSpec()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
setViewScriptPathNoControllerSpec($spec)
(Àº)´Â,noController
ÇÏÁö¸¸ À¯È¿ÇÑ °æ¿ì¿¡
°³°³ÀÇ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º
((À¸)·ÎºÎÅÍ ºä½ºÅ©¸³Æ®ÀÇ ±âÀú ÆÐ½º¸¦ Á¦¿ÜÇÑ ºÎºÐ)
(À»)¸¦ °áÁ¤ÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÐ½º ÁöÁ¤À» º¯°æÇÕ´Ï´Ù.
µðÆúÆ®ÀÇ ¼³Á¤Àº :action.:suffix
ÀÔ´Ï´Ù.
ÇöÀçÀÇ ¼³Á¤À» ÃëµæÇÏ·Á¸é
getViewScriptPathNoControllerSpec()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
ÆÐ½º ÁöÁ¤À»¿¡¼ ¿Í ° ¼¼¼¼ÇÏ°Ô ½Ç½ÃÇÏ·Á¸é ,
Zend_Filter_Inflector
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.½ÇÀº,ViewRenderer
(Àº)´Â ÆÐ½ºÀÇ ¸ÅÇÎÀ» ½Ç½ÃÇÒ ¶§¿¡ ÀÌ¹Ì ÀÎÈÄ·¹Å©Å¸¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
ÀÎÈÄ·¹Å©Å¸¿¡ ¼ÕÀ» ³Ö°í ½Í´Ù (µ¶ÀÚÀûÀÎ ÀÎÈÄ·¹Å©Å¸¸¦ »ç¿ëÇϰųª
µðÆúÆ®ÀÇ ÀÎÈÄ·¹Å©Å¸¿¡ ¼Õº¸°Å³ª ÇÏ°í ½Í´Ù) °æ¿ì´Â,
ÀÌÇÏÀÇ ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
getInflector()
(Àº)´Â, ÀÎÈÄ·¹Å©Å¸¸¦ ÃëµæÇÕ´Ï´Ù.
¾ÆÁ÷ ViewRenderer
¿¡ ÀÎÈÄ·¹Å©Å¸°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â,
µðÆúÆ®ÀÇ ±ÔÄ¢¿¡ ÀǰÅÇÑ ÀÎÈÄ·¹Å©Å¸¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
By default, it uses static rule references for the suffix
and module directory, as well as a static target; this
allows various ViewRenderer
properties the
ability to dynamically modify the inflector.
setInflector($inflector, $reference)
(Àº)´Â,
ViewRenderer
±×¸®°í »ç¿ëÇÏ´Â µ¶ÀÚÀûÀÎ ÀÎÈÄ·¹Å©Å¸¸¦ ¼³Á¤ÇÕ´Ï´Ù.
$reference
ÇÏÁö¸¸ true ÀÇ °æ¿ì´Â,
´ë»ó »Ó¸¸ÀÌ ¾Æ´Ï¶ó »çÇȽº³ª ¸ðµâ µð·ºÅ丮µµ
ViewRenderer
ÀÇ ÇÁ·ÓÆÛƼ¿¡ÀÇ Á¤ÀûÀÎ ÂüÁ¶·Î ÇÕ´Ï´Ù.
![]() |
µðÆúÆ®ÀÇ °Ë»ö ¹æ½Ä |
---|---|
|
ViewRenderer
API ÀÇ ¸¶Áö¸·¿¡ ¼Ò°³ÇÏ´Â °ÍÀº,
½ÇÁ¦·Î ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÏ´Â ¸Þ¼Òµå¿Í
ºäÀÇ ·»´õ¸µÀ» ½Ç½ÃÇÏ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.ÀÌÇϸ¦ ºÁ ÁÖ¼¼¿ä.
renderScript($script, $name)
(Àº)´Â, ÁöÁ¤ÇÑ ÆÐ½ºÀÇ ½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù.
¿É¼ÇÀ¸·Î, ÆÐ½º ¼¼±×¸ÕÆ®(segment)ÀÇ À̸§À» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ ,ViewRenderer
(Àº)´Â ½ºÅ©¸³Æ®¸íÀ» ÀÚµ¿ÀûÀ¸·Î °áÁ¤ÇÒ °ÍÀº ¾ø½À´Ï´Ù.
±× ´ë½Å¿¡,$script
±×¸®°í ÁöÁ¤µÈ ³»¿ëÀ» Á÷Á¢
ºä¿ÀºêÁ§Æ®ÀÇ render()
¸Þ¼Òµå¿¡ °Ç³×ÁÝ´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
¸®½ºÆù½º ¿ÀºêÁ§Æ®¿¡ ºä°¡ ·»´õ¸µ µÇ¸é,
ÀÚµ¿ÀûÀ¸·Î |
![]() |
ÁÖÀÇ |
---|---|
µðÆúÆ®¿¡¼´Â,
|
getViewScript($action, $vars)
(Àº)´Â, °Ç³×¹ÞÀº ¾×¼ÇÀ̳ª $vars
±×¸®°í ÁöÁ¤ÇÑ º¯¼öÀÇ °ª¿¡ ±Ù°ÅÇØ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
$vars
¹è¿ÀÇ Å°´Â, ÆÐ½º¸¦ ÁöÁ¤Çϱâ À§ÇÑ Å°
('moduleDir','module','controller','action' ¹× 'suffix')
ÀÇ ¾ðÁ¨°¡µË´Ï´Ù.°Ç³×¹ÞÀº º¯¼öÀÇ °ªÀ» ±âÃÊ·Î ÇØ¼ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
¾Æ¹«°Íµµ °Ç³×¹ÞÁö ¾Ê¾Ò´ø °æ¿ì´Â, ÇöÀçÀÇ ¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» ±âÃÊ·Î ÇØ¼ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
getViewScript()
(Àº)´Â,noController
Ç÷¡±×ÀÇ ³»¿ë¿¡ ÀÇÇØ¼
viewScriptPathSpec
ȤÀº
viewScriptPathNoControllerSpec
ÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇÕ´Ï´Ù.
¸ðµâ¸íÀ̳ª ÄÜÆ®·Ñ·¯¸í, ¾×¼Ç¸í¿¡ ³ªÅ¸³´Ù ´Ü¾îÀÇ ´Ü¶ôÀº, µ¥½¬ ('-') (À¸)·Î ¿Å°ÜÁý´Ï´Ù. µû¶ó¼, ¿¹¸¦ µé¾î ÄÜÆ®·Ñ·¯¸íÀÌ 'foo.bar' ±×¸®°í ¾×¼Ç¸íÀÌ 'baz:bat' (À̾ú)¿´´Ù°í Çϸé, µðÆúÆ®ÀÇ ÆÐ½º ÁöÁ¤À» ±âÃÊ·Î ÇÑ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º´Â 'foo-bar/baz-bat.phtml' µË´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
µðÆúÆ®¿¡¼´Â,
|
render($action, $name, $noController)
(Àº)´Â, ¿ì¼± $name
ȤÀº
$noController
ÇÏÁö¸¸ ÁöÁ¤µÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù.
ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì´Â,ViewRenderer ÀÇ ´ëÀÀÇÏ´Â Ç÷¡±×
(°¢°¢ responseSegment (¿Í)°ú noController) (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
´ÙÀ½¿¡,$action
Àμö°¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é,
±×°ÍÀ» getViewScript()
¿¡ °Ç³×ÁÝ´Ï´Ù.
¸¶Áö¸·À¸·Î, ÃëµæÇÑ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦
renderScript()
¿¡ °Ç³×ÁÝ´Ï´Ù.
![]() |
ÁÖÀÇ |
---|---|
render() (À»)¸¦ »ç¿ëÇÒ ¶§ , ±× ºÎÀÛ¿ë¿¡ ÁÖÀÇÇսôÙ. ¸®½ºÆù½º ¼¼±×¸ÕÆ®(segment)¸íÀ̳ª noController Ç÷¡±×·Î ÁöÁ¤ÇÑ ³»¿ëÀº, ±× ¿ÀºêÁ§Æ®³»¿¡¼ °è¼Ó ³²½À´Ï´Ù. °Ô´Ù°¡ ·»´õ¸µÀÌ ¿Ï·áÇßÀ» ¶§¿¡ noRender µµ ¼³Á¤µË´Ï´Ù. |
![]() |
ÁÖÀÇ |
---|---|
µðÆúÆ®¿¡¼´Â,
|
renderBySpec($action, $vars, $name)
(Àº)´Â, ÆÐ½º ÁöÁ¤¿ëÀÇ º¯¼ö¸¦ °Ç³×ÁÖ¾î ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù.
$action
¹× $vars
ÀÇ ³»¿ëÀ»
getScriptPath()
¿¡, ±×¸®°í ±× °á°ú ¾òÀ» ¼ö ÀÖ´ø ½ºÅ©¸³Æ®ÀÇ ÆÐ½º¿Í
$name
(À»)¸¦ renderScript()
¿¡ °Ç³×ÁÝ´Ï´Ù.
·Ê 7.8. ±âº»ÀûÀÎ »ç¿ë¹ý
°¡Àå ±âº»ÀûÀÎ »ç¿ë¹ýÀº, ±âµ¿ ÆÄÀϳ»¿¡¼ ViewRenderer
(À»)¸¦ ÀÛ¼ºÇØ ÇïÆÛ ºê·ÎÄ¿¿¡ µî·ÏÇØ,
¾×¼Ç ¸Þ¼Òµå·Î º¯¼öÀÇ °ªÀ» ¼³Á¤ÇÑ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.
<?php
// ±âµ¿ ÆÄÀϳ»¿¡¼
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
...
<?php
// 'foo' ¸ðµâÀÇ 'bar' ÄÜÆ®·Ñ·¯
class Foo_BarController extends Zend_Controller_Action
{
// µðÆúÆ®·Î bar/index.phtml (À»)¸¦ ·»´õ¸µ ÇϹǷÎ, ƯÈ÷ ¾Æ¹«°Íµµ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù
public function indexAction()
{
}
// º¯¼ö 'foo' ÀÇ °ªÀ» 'bar' (À¸)·Î ¼³Á¤ÇØ bar/populate.phtml (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
// ºä¿ÀºêÁ§Æ®´Â ÀÌ¹Ì preDispatch() ±×¸®°í Á¤Àǵǰí ÀÖÀ¸¹Ç·Î, ÀÌ¹Ì »ç¿ë °¡´ÉÇÕ´Ï´Ù
public function populateAction()
{
$this->view->foo = 'bar';
}
// ¾Æ¹«°Íµµ ·»´õ¸µ ÇÏÁö ¾Ê°í ´Ù¸¥ ¾×¼Ç¿¡ Àü¼Û ÇÕ´Ï´Ù
// Àü¼ÛóÀÇ ¾×¼ÇÀ¸·Î ¾î¶°ÇÑ ·»´õ¸µÀ» ½Ç½ÃÇÕ´Ï´Ù
public function bazAction()
{
$this->_forward('index');
}
// ¾Æ¹«°Íµµ ·»´õ¸µ ÇÏÁö ¾Ê°í ´Ù¸¥ Àå¼Ò¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù
public function batAction()
{
$this->_redirect('/index');
}
}
![]() |
¸í¸í ±Ô¾à: ÄÜÆ®·Ñ·¯¸íÀ̳ª ¾×¼Ç¸íÀÇ ´Ü¾îÀÇ ´Ü¶ô |
---|---|
ÄÜÆ®·Ñ·¯³ª ¾×¼ÇÀÇ À̸§ÀÌ º¹¼öÀÇ ´Ü¾î·ÎºÎÅÍ µÇ´Â °ÍÀÎ °æ¿ì,
µð½ºÆÖÃÄ¿¡´Â, ƯÁ¤ÀÇ ÆÐ½º³ª ´Ü¶ôÁö¾î ¹®ÀÚ¸¦ »ç¿ëÇÏ°í ´Ü¾î¸¦ ´Ü¶ôÁö¾ú´Ù
URL (À»)¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
µÎ¹øÂ°ÀÇ ¿¹¿¡¼´Â, ¸ðµâÀº µðÆúÆ® ¸ðµâÀΠäÀÎ °Í¿¡ ÁÖÀÇÇսôÙ.
±×·¯³ª, ÆÐ½º ´Ü¶ô ¹®ÀÚ°¡ ÀÖ±â À§Çؼ,
|
·Ê 7.9. ÀÚµ¿ ·»´õ¸µÀÇ ¹«È¿È
¾×¼ÇÀ̳ª ÄÜÆ®·Ñ·¯¿¡ µû¶ó¼´Â, ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î ÇÏ°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä.
¿¹¸¦ µé¾î,HTML ÀÌ¿Ü (XML (ÀÌ)³ª JSON µî) (À»)¸¦ Ãâ·ÂÇÏ°í ½ÍÀº °æ¿ì³ª
´ÜÁö ¾Æ¹«°Íµµ Ãâ·ÂÇÏ°í ½ÍÁö ¾ÊÀº °æ¿ì µîÀÔ´Ï´Ù.
±×·± °æ¿ì¿¡´Â ÀÌÇÏÀÇ ¸î°³ÀÇ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.
Áï, ¸ðµç ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î ÇÑ´Ù
(setNeverRender()
) Àΰ¡, ȤÀº ÇöÀçÀÇ ¾×¼ÇÀ¸·Î ¸¸
ÀÚµ¿ ·»´õ¸µÀ» ¹«È¿·Î ÇÑ´Ù (setNoRender()
) Àΰ¡ÀÔ´Ï´Ù.
<?php
// Bar ¸ðµâÀÇ Baz ÄÜÆ®·Ñ·¯ Ŭ·¡½º
class Bar_BazController extends Zend_Controller_Action
{
public function fooAction()
{
// ÀÌ ¾×¼Ç¿¡¼´Â ÀÚµ¿ ·»´õ¸µÀ» ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù
$this->_helper->viewRenderer->setNoRender();
}
}
// Bar ¸ðµâÀÇ Bat ÄÜÆ®·Ñ·¯ Ŭ·¡½º
class Bar_BatController extends Zend_Controller_Action
{
public function preDispatch()
{
// ÀÌ ÄÜÆ®·Ñ·¯ÀÇ ¾×¼Ç¿¡¼´Â °áÄÚ ÀÚµ¿ ·»´õ¸µÀ» ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù
$this->_helper->viewRenderer->setNoRender();
}
}
![]() |
ÁÖÀÇ |
---|---|
´ëºÎºÐÀÇ °æ¿ì´Â, ÀÚµ¿ ·»´õ¸µÀ» Àüü·Î ¹«È¿·Î ÇÑ´Ù
( |
·Ê 7.10. ´Ù¸¥ ºä½ºÅ©¸³Æ®ÀÇ ¼±ÅÃ
¾×¼Ç¸íÀ¸·ÎºÎÅÍ ÀÚµ¿ÀûÀ¸·Î Á¤ÇØÁö´Â ½ºÅ©¸³Æ®°¡ ¾Æ´Ï°í,
±× ÀÌ¿ÜÀÇ °ÍÀ» ·»´õ¸µ ÇÏ°í ½Í¾îÁö´Â °æ¿ìµµ ÀÖ°ÚÁö¿ä.
¿¹¸¦ µé¾î,add ¾×¼Ç°ú edit ¾×¼ÇÀÇ µÑÀ» °¡Áö´Â ÄÜÆ®·Ñ·¯°¡ ÀÖ¾ú´Ù°í ÇսôÙ.
¾î´À ÂÊÀÇ ¾×¼Çµµ °°´Ù 'form' ºä¸¦ Ç¥½ÃÇÕ´Ï´Ù¸¸,
°Å±â·Î ¼³Á¤ÇÏ´Â °ªÀÌ ´Ù¸¨´Ï´Ù.
±×·± °æ¿ì¿¡, °¢°¢À¸·Î ½ºÅ©¸³Æ®¸íÀ» ¹Ù²Ù´Â °ÍÀº °£´ÜÇÕ´Ï´Ù.
setScriptAction()
(ÀÌ)³ª setRender()
(À»)¸¦ »ç¿ëÇϵ簡, ȤÀº ÇïÆÛ¸¦ ¸Þ¼Òµå·Î¼ ÄÝ ÇÕ´Ï´Ù.
À̰ÍÀº setRender()
(À»)¸¦ ±âµ¿ÇÕ´Ï´Ù.
<?php
// Foo ¸ðµâÀÇ Bar ÄÜÆ®·Ñ·¯ Ŭ·¡½º
class Foo_BarController extends Zend_Controller_Action
{
public function addAction()
{
// 'bar/add.phtml' (Àº)´Â ¾Æ´Ï°í 'bar/form.phtml' (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
$this->_helper->viewRenderer('form');
}
public function editAction()
{
// 'bar/edit.phtml' (Àº)´Â ¾Æ´Ï°í 'bar/form.phtml' (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
$this->_helper->viewRenderer->setScriptAction('form');
}
public function processAction()
{
// ¹«¾ùÀΰ¡ÀÇ Ã¼Å©¸¦ ÇÑ ´ÙÀ½¿¡...
if (!$valid) {
// 'bar/process.phtml' (Àº)´Â ¾Æ´Ï°í 'bar/form.phtml' (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
$this->_helper->viewRenderer->setRender('form');
return;
}
// ±× ¿ÜÀÇ Ã³¸®¸¦ °è¼ÓÇÕ´Ï´Ù...
}
}
·Ê 7.11. µî·ÏµÇ¾î ÀÖ´Â ºäÀÇ º¯°æ
ºä¿ÀºêÁ§Æ®ÀÇ ¼³Á¤À» º¯°æÇÏ°í ½Í¾îÁ³´Ù°í ÇսôÙ.
¿¹¸¦ µé¾î, ÇïÆÛ ÆÐ½º³ª ÀÎÄÚµùÀ» º¯°æÇÏ°í ½Í¾îÁö¸é ¾î¶»°Ô Çմϱî?
±×·± °æ¿ì´Â, ÄÜÆ®·Ñ·¯·Î ¼³Á¤µÇ¾î ÀÖ´Â ºä¿ÀºêÁ§Æ®¸¦ º¯°æÇÏ´ÂÁö,
ȤÀº ViewRenderer
ÀÇ ¿ÜºÎ·ÎºÎÅÍ ºä¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù.
¾î´ÀÂÊÀ̳ª °°Àº ¿ÀºêÁ§Æ®¿¡ÀÇ ÂüÁ¶¸¦ ÃëµæÇÏ°Ô µË´Ï´Ù.
<?php
// Foo ¸ðµâÀÇ Bar ÄÜÆ®·Ñ·¯ Ŭ·¡½º
class Foo_BarController extends Zend_Controller_Action
{
public function preDispatch()
{
// ºäÀÇ ÀÎÄÚµùÀ» º¯°æÇÕ´Ï´Ù
$this->view->setEncoding('UTF-8');
}
public function bazAction()
{
// ºä¿ÀºêÁ§Æ®¸¦ ÃëµæÇØ, À̽ºÄÉÀÌÇÁ¿ëÀÇ ÄݹéÀ» 'htmlspecialchars' (À¸)·Î ¼³Á¤ÇÕ´Ï´Ù
$view = $this->_helper->viewRenderer->view;
$view->setEscape('htmlspecialchars');
}
}
·Ê 7.12. ÆÐ½ºÀÇ ÁöÁ¤ ¹æ¹ýÀÇ º¯°æ
°æ¿ì¿¡ µû¶ó¼´Â, µðÆúÆ®ÀÇ ÆÐ½º ÁöÁ¤ÀÌ ´ç½ÅÀÇ »çÀÌÆ®¿¡ Àß µé¾î¸ÂÁö ¾Ê´Â °Íµµ ÀÖ°ÚÁö¿ä. ¿¹¸¦ µé¾î, ¸ðµç ÅÛÇø´À» ´ÜÀÏÀÇ µð·ºÅ丮 ºÎÇÏ¿¡°Ô Á¤¸®ÇØ µ¥ÀÚÀ̳ª¿¡´Â ±× µð·ºÅ丮¿¡ ´ëÇÑ ¾×¼¼½º±Ç¸¸À» ÁÖ°í ½Í´Ù°í ÇßÀ» °æ¿ìÀÔ´Ï´Ù (Smarty (À»)¸¦ »ç¿ëÇÏ´Â °æ¿ì µî¿¡ ÈçÈ÷ ÀÖ½À´Ï´Ù). ±×·± °æ¿ì´Â, ºäÀÇ ±âÀú ÆÐ½º¸¦ Çϵå ÄÚµù ÇØ, ±×°ÍÀ» ¾×¼ÇÀÇ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º·Î ÇØ¼ »ç¿ëÇÏ°Ô µË´Ï´Ù.
ÀÌ ¿¹¿¡¼´Â, ºäÀÇ ±âÀú ÆÐ½º¸¦ '/opt/vendor/templates' (À¸)·Î ÇØ, ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º´Â ':moduleDir/:controller/:action.:suffix' µÇµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù.noController Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â, ¼ºê µð·ºÅ丮 (':action.:suffix') ¿¡¼°¡ ¾Æ´Ï°í Åé µð·ºÅ丮·ÎºÎÅÍÀÇ ÆÐ½º·Î ÇØ¼ ã°Ô µË´Ï´Ù. ¸¶Áö¸·À¸·Î, ºä½ºÅ©¸³Æ®ÀÇ ÆÄÀÏÀÇ È®ÀåÀÚ(extension)·Î¼ 'tpl' (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.
<?php
/**
* ±âµ¿ ÆÄÀÏ
*/
// ´Ù¸¥ ºä ½ÇÀåÀ» »ç¿ëÇÕ´Ï´Ù
$view = new ZF_Smarty();
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
$viewRenderer->setViewBasePathSpec('/opt/vendor/templates')
->setViewScriptPathSpec(':module/:controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
·Ê 7.13. ´ÜÀÏÀÇ ¾×¼ÇÀ¸·ÎºÎÅÍ º¹¼öÀÇ ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÏ´Â ¿¹
½Ã°£¿¡´Â, º¹¼öÀÇ ºä½ºÅ©¸³Æ®¸¦ ÇϳªÀÇ ¾×¼ÇÀ¸·Î ó¸®ÇÏ°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä.
À̰ÍÀº, ¸Å¿ì Á÷°¨ÀûÀÎ ¹æ¹ýÀ¸·Î ½ÇÇöµÉ ¼ö ÀÖ½À´Ï´Ù.´ÜÁö
render()
(À»)¸¦ ÇÊ¿äÇÑ ¸¸Å ÄÝ Çϸé ÁÁ½À´Ï´Ù.
<?php
class SearchController extends Zend_Controller_Action
{
public function resultsAction()
{
// $this->model ¿¡ ÇöÀçÀÇ ¸ðµ¨ÀÌ ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù
$this->view->results = $this->model->find($this->_getParam('query', '');
// render() (Àº)´Â, µðÆúÆ®¿¡¼´Â ViewRenderer ¿¡ÀÇ ÇÁ·Ï½Ã°¡ µË´Ï´Ù.
// ¿ì¼± form (À»)¸¦, ±×¸®°í results (À»)¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
$this->render('form');
$this->render('results');
}
public function formAction()
{
// ¾Æ¹«°Íµµ ÇÏÁö ¾Ê¾Æµµ,ViewRenderer ÇÏÁö¸¸ ÀÚµ¿ÀûÀ¸·Î ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
}
}
¾×¼Ç ÇïÆÛ´Â, Ãß»ó Ŭ·¡½º
Zend_Controller_Action_Helper_Abstract
(À»)¸¦ °è½ÂÇØ ÀÛ¼ºÇÕ´Ï´Ù.
¿©±â¿¡´Â, ±âº»ÀûÀÎ ÀÎÅÍÆäÀ̽º³ª ÇïÆÛ ºê·ÎÄ¿°¡ »ç¿ëÇÏ´Â Çʼö ±â´ÉµîÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
±¸Ã¼ÀûÀ¸·Î´Â, ´ÙÀ½°ú °°Àº ¸Þ¼ÒµåÀÔ´Ï´Ù.
setActionController()
(À»)¸¦ »ç¿ëÇϰí, ÇöÀçÀÇ ¾×¼Ç ÄÜÆ®·Ñ·¯¸¦ ¼³Á¤ÇÕ´Ï´Ù.
init()
(Àº)´Â ÇïÆÛ ºê·ÎÄ¿¿¡ ÀÇÇØ¼ ±âµ¿½Ã¿¡ ½ÇÇàµÇ¾î
ÇïÆÛ¸¦ ÃʱâÈÇÕ´Ï´Ù.À̰ÍÀº,
¾×¼Ç ÃÖÀγ»ÀÇ º¹¼öÀÇ ÄÜÆ®·Ñ·¯·Î µ¿ÀÏÇÑ ÇïÆÛ¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì¿¡
»óŸ¦ ¸®¼ÂÆ® ÇÒ ¶§ µî¿¡ Æí¸®ÇÕ´Ï´Ù.
preDispatch()
(Àº)´Â µð½ºÆÌÄ¡¾ÆÅ©¼ÇÀÇ Àü¿¡ ½ÇÇàµË´Ï´Ù.
postDispatch()
(Àº)´Â µð½ºÆÌÄ¡¾ÆÅ©¼ÇÀÌ Á¾·áÇÑ ´ÙÀ½¿¡ ½ÇÇàµË´Ï´Ù.
preDispatch()
Ç÷¯±× ÀÎÀÌ ¾×¼ÇÀÇ Ã³¸®¸¦ ½ºÅµ ÇßÀ» °æ¿ìµµ,
À̰ÍÀº ½ÇÇàµË´Ï´Ù.µÚ󸮵îÀ» ¿©±â¼ ½Ç½ÃÇÕ´Ï´Ù.
getRequest()
(Àº)´Â ÇöÀçÀÇ ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù.
getResponse()
(Àº)´Â ÇöÀçÀÇ ¸®½ºÆù½º ¿ÀºêÁ§Æ®¸¦ ÃëµæÇÕ´Ï´Ù.
getName()
(Àº)´Â ÇïÆÛÀÇ À̸§À» ÃëµæÇÕ´Ï´Ù.
Ŭ·¡½º¸í¿¡ ¾ð´õ ½ºÄھư¡ Æ÷ÇԵǴ °æ¿ì´Â ¸¶Áö¸· ¾ð´õ ½ºÄÚ¾Æ ÀÌÈÄÀÇ ¹®ÀÚ,
±×·¸Áö ¾ÊÀº °æ¿ì´Â Ŭ·¡½º¸í Àüü¸¦ µ¹·ÁÁÝ´Ï´Ù.¿¹¸¦ µé¾î, Ŭ·¡½º¸íÀÌ
Zend_Controller_Action_Helper_Redirector
ÀÇ °æ¿ì´Â Redirector
(À»)¸¦, Ŭ·¡½º¸íÀÌ
FooMessage
ÀÇ °æ¿ì´Â ±×´ë·ÎÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù.
¿É¼ÇÀ¸·Î, ÇïÆÛ Ŭ·¡½º¿¡ direct()
¸Þ¼Òµå¸¦ ½ÇÀåÇÒ ¼öµµ ÀÖ½À´Ï´Ù.À̰ÍÀ» Á¤ÀÇÇØ µÎ¸é,
ÇïÆÛ ºê·ÎÄ¿ÀÇ ¸Þ¼ÒµåÀÎ °Í °°ÀÌ ±× ÇïÆÛ¸¦ Ãë±ÞÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ, ÇÑ ¹ø¸¸ »ç¿ëÇÏ´Â ÇïÆÛ°¡ Ãë±ÞÇϱ⠽¬¿öÁý´Ï´Ù.
¿¹¸¦ µé¾î,redirector
ÀÇ direct()
ÇÏ goto()
ÀÇ ¾Ù¸®¾î½º(alias)°¡ µÇ°í ÀÖÀ¸¹Ç·Î, ÀÌ¿Í °°ÀÌ ÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
<?php
// /blog/view/item/id/42 ¿¡ ¸®µð·ºÆ® ÇÕ´Ï´Ù
$this->_helper->redirector('item', 'view', 'blog', array('id' => 42));
³»ºÎÀûÀ¸·Î´Â, ¿ì¼± ÇïÆÛ ºê·ÎÄ¿ÀÇ __call()
¸Þ¼Òµå°¡ redirector
(ÀÌ)¶ó´Â À̸§ÀÇ ÇïÆÛ¸¦ ã¾Æ,
±×¸®°í ±× ÇïÆÛ·Î direct
¸Þ¼Òµå°¡ Á¤Àǵǰí ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇØ
°Ç³×¹ÞÀº Àμö·Î ±× ¸Þ¼Òµå¸¦ ÄÝ Çϰí ÀÖ½À´Ï´Ù.
µ¶ÀÚÀûÀÎ ÇïÆÛ Ŭ·¡½º¸¦ ÀÛ¼ºÇßÀ» °æ¿ì´Â, À§¿¡¼ ¼³¸íÇÑ °Íó·³ ÇØ ±×°ÍÀ» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØ µÓ½Ã´Ù.