7.8. ¾×¼Ç ÇïÆÛ

7.8.1. µµÀÔ

¾×¼Ç ÇïÆÛ¸¦ »ç¿ëÇϸé,Zend_Controller_Action (À»)¸¦ °è½ÂÇÑ ÀÓÀÇÀÇ ¾×¼Ç ÄÜÆ®·Ñ·¯¿¡ ´ëÇØ¼­ ½ÇÇà½Ã³ª ±× ¿Ü Çʿ信 µû¶ó¼­ ±â´É Ãß°¡¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾×¼Ç ÇïÆÛÀÇ ¸ñÀûÀº, ¾×¼Ç ÄÜÆ®·Ñ·¯¿¡ °øÅë ±â´ÉÀ» Ãß°¡Çϱâ À§Çؼ­ Çϳª Çϳª Ãß»ó Ŭ·¡½º¸¦ °è½ÂÇÏ´Â ¼ö°í¸¦ »ý·«ÇÏ´Â °Í¿¡ ÀÖ½À´Ï´Ù.

¾×¼Ç ÇïÆÛ¿¡°Ô´Â ´Ù¾çÇÑ »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î,Zend_View_Helpers (ÀÌ)³ª Zend_Controller_Plugin (¿Í)°ú °°ÀÌ, ó¸®ÀÇ Á߸Ÿ¦ Çϱâ À§Çؼ­ ÀÌ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾×¼Ç ÇïÆÛ´Â (Zend_View_Helpers (¿Í)°ú °°°Ô), ÇÊ¿äÇÏ°Ô µÈ ½ÃÁ¡¿¡¼­ ÀоîµéÀÏ ¼öµµ ÀÖ°í, ¸®Äù½ºÆ®½Ã (±âµ¿½Ã) (ÀÌ)³ª ¾×¼Ç ÄÜÆ®·Ñ·¯ÀÇ ÀÛ¼º½Ã (init()) ±×¸®°í ÀоîµéÀÏ ¼öµµ ÀÖ½À´Ï´Ù.ÀÚ¼¼ÇÑ °ÍÀº, ÀÌÇÏÀÇ »ç¿ë¿¹¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

7.8.2. ÇïÆÛÀÇ ÃʱâÈ­

ÇïÆÛ¸¦ ÃʱâÈ­ÇÏ·Á¸é ¸î°³ÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Çʿ信 µû¶ó¼­, ¶Ç ±× ÇïÆÛÀÇ ±â´É¿¡ µû¶ó ±¸ºÐÇÏ¿© »ç¿ëÇսôÙ.

ÇïÆÛ ºê·ÎÄ¿´Â,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 ÀÇ Å¬·¡½º¿Í °°½À´Ï´Ù.

7.8.3. ÇïÆÛ ºê·ÎÄ¿

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')
}

7.8.4. ÆíÀÔÀÇ ¾×¼Ç ÇïÆÛ

Zend Framework ¿¡´Â, µðÆúÆ®·Î 3Á¾·ùÀÇ ¾×¼Ç ÇïÆÛ°¡ Â¥³Ö¾îÁö°í ÀÖ½À´Ï´Ù. ¼¼¼Ç ´ÜÀ§ÀÇ Ç÷¡½Ã ¸Þ¼¼Áö¸¦ Ãë±ÞÇÑ´Ù FlashMessenger ¶ó°í ¾îÇø®ÄÉÀ̼dz»¿¡¼­ ³»ºÎ ȤÀº ¿ÜºÎ¿¡ÀÇ ¸®µð·ºÆ®¸¦ ½ÇÀåÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù Redirector, ±×¸®°í, ÄÜÆ®·Ñ·¯³»¿¡¼­ÀÇ ºä¿ÀºêÁ§Æ®ÀÇ ¼³Á¤°ú ºäÀÇ ·»´õ¸µÀ» ÀÚµ¿È­ÇÑ´Ù ViewRenderer ÀÔ´Ï´Ù.

7.8.4.1. ActionStack

ActionStack ÇïÆÛ´Â, ¸®Äù½ºÆ®¸¦ ÇÁ·±Æ® ÄÜÆ®·Ñ·¯ÀÇ ActionStack Ç÷¯±× Àο¡ °Ý³³ÇÕ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ, ¸®Äù½ºÆ®ÀÇ ½ÇÇà½Ã¿¡ ¾×¼ÇÀÇ Å¥¸¦ ÀÛ¼ºÇϱ⠽¬¿öÁý´Ï´Ù. ÀÌ ÇïÆÛ´Â, ¾×¼ÇÀ» Ãß°¡ÇÒ ¶§¿¡ »õ·Î¿î ¸®Äù½ºÆ® ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÒ±î ¾×¼Ç/ÄÜÆ®·Ñ·¯/¸ðµâ ÀÇ ¼³Á¤À» ÁöÁ¤ÇÒ±îÀÇ ¾î´ÀÂÊÀ̵çÀ» ÀÌ¿ëÇÕ´Ï´Ù.

[ÁÖÀÇ] ActionStack ÇïÆÛ¸¦ ±âµ¿Çϸé 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);
    }
}
?>

7.8.4.2. FlashMessenger

7.8.4.2.1. µµÀÔ

FlashMessenger ÇïÆÛ´Â, ´ÙÀ½ÀÇ ¸®Äù½ºÆ® ½Ã¿¡ À¯Àú¿¡°Ô º¸ÀÌ°Ô ÇÒ Çʿ䰡 ÀÖ´Â ¸Þ¼¼Áö¸¦ °Ç³×ÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù. ÀÌ ±â´ÉÀ» ½ÇÇöÇϱâ À§ÇØ,FlashMessenger ÇÏ Zend_Session_Namespace (À»)¸¦ »ç¿ëÇØ ¸Þ¼¼Áö¸¦ º¸°üÇϰí ÀÖ½À´Ï´Ù. Zend_Session (ÀÌ)³ª Zend_Session_Namespace (À»)¸¦ »ç¿ëÇÒ ¶§ , ±âµ¿ ÆÄÀÏÁß¿¡¼­ Zend_Session::start() (À»)¸¦ ½ÇÇàÇϵµ·Ï Çսô٠(»ó¼¼ÇÑ »ç¿ë¿¹´Â Zend Session ÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).

7.8.4.2.2. ±âº»ÀûÀÎ »ç¿ë¿¹

ÀÌÇÏÀÇ »ç¿ë¿¹´Â, °¡Àå ±âº»ÀûÀÎ Ç÷¡½Ã ¸Þ½ÅÀúÀÇ »ç¿ë¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù. ¾×¼Ç /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();
    }
}

7.8.4.3. Redirector

7.8.4.3.1. µµÀÔ

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.8.4.3.2. ±âº»ÀûÀÎ »ç¿ë¿¹

·Ê 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'
        
);
    }
}

7.8.4.4. ViewRenderer

7.8.4.4.1. µµÀÔ

ViewRenderer ÇïÆÛ´Â, ÀÌÇÏ¿Í °°Àº ¿ä°ÇÀ» ä¿ì±â À§Çؼ­ ¸¸µé¾îÁø °ÍÀÔ´Ï´Ù.

  • ÄÜÆ®·Ñ·¯³»¿¡¼­ Çϳª Çϳª ºä¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏÁö ¾Ê¾Æµµ ³¡³ªµµ·Ï(µíÀÌ) ÇÑ´Ù. ºä¿ÀºêÁ§Æ®´Â ÀÚµ¿ÀûÀ¸·Î ÄÜÆ®·Ñ·¯¿¡ µî·ÏµË´Ï´Ù.

  • ºä½ºÅ©¸³Æ®³ª ÇïÆÛ, ±×¸®°í ÇÊÅÍÀÇ ÆÐ½º¸¦ ÇöÀçÀÇ ¸ðµâ¿¡ ±Ù°ÅÇØ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤ÇØ, ¸ðµâ¸íÀ» ÇïÆÛ³ª ÇÊÅÍÀÇ Å¬·¡½º¸íÀÇ ¼±µÎ¿¡ ÀÚµ¿ÀûÀ¸·Î °ü·ÃÁþ´Â´Ù.

  • ¸ðµç ÄÜÆ®·Ñ·¯¿Í ¾×¼ÇÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù ±Û·Î¹úÀÎ ºä¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÑ´Ù.

  • ¸ðµç ÄÜÆ®·Ñ·¯·Î »ç¿ëÇÏ´Â, µðÆúÆ®ÀÇ ºä·»´Ù¸µ¿ÀÇÁ¼ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

  • ¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ, ÀÚµ¿ÀûÀ¸·Î ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Ãß°¡ÇÑ´Ù.

  • ºäÀÇ ±âÀú ÆÐ½º³ª ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ µ¶ÀÚÀûÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

[ÁÖÀÇ] ÁÖÀÇ

_forward() (ÀÌ)³ª ¸®µð·ºÆ®, ȤÀº ¼öµ¿À¸·ÎÀÇ ·»´õ¸µÀ» ½Ç½ÃÇÏ´Â °æ¿ì´Â, ÀÚµ¿ ·»´õ¸µÀº ºÒÇÊ¿äÇÕ´Ï´Ù.ÀÌ·¯ÇÑ Ã³¸®¸¦ ½Ç½ÃÇÏ´Â °æ¿ì´Â, Ãâ·ÂÀ» Àڱ⠺δãÀ¸·Î ½Ç½ÃÇÏ´Â °ÍÀ» ViewRenderer ¿¡ ´ëÇØ¼­ Áö½ÃÇÕ´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

ViewRenderer (Àº)´Â µðÆúÆ®·Î À¯È¿ÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀ» ¹«È¿·Î ÇÏ·Á¸é , ÇÁ·±Æ® ÄÜÆ®·Ñ·¯ÀÇ ÆÄ¶ó¹ÌÅÍ noViewRenderer (À»)¸¦ ÁöÁ¤ÇÑ´Ù ($front->setParam('noViewRenderer', true)) Àΰ¡, ȤÀº ÇïÆÛ ºê·ÎÄ¿·ÎºÎÅÍ ÇïÆÛ¸¦ »èÁ¦ (Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer')) ÇÕ´Ï´Ù.

ÇÁ·±Æ® ÄÜÆ®·Ñ·¯·ÎÀÇ µð½ºÆÌÄ¡ ó¸® Àü¿¡ ViewRenderer ÀÇ ¼³Á¤À» º¯°æÇÏ°í ½ÍÀº °æ¿ì´Â, ´ÙÀ½ÀÇ ¸î°³ÀÇ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù.

  • µ¶ÀÚÀûÀÎ ViewRenderer ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ, ÇïÆÛ ºê·ÎÄ¿¿¡ ±×°ÍÀ» °Ç³×ÁÖ¾î µî·ÏÇÑ´Ù.

    
    <?php
    $viewRenderer 
    = new Zend_Controller_Action_Helper_ViewRenderer();
    $viewRenderer->setView($view)
                 ->
    setViewSuffix('php');
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
  • ViewRenderer ¿ÀºêÁ§Æ®¸¦, ÇïÆÛ ºê·ÎÄ¿·ÎºÎÅÍ Çʿ信 µû¶ó¼­ ÀÛ¼º, ÃëµæÇÑ´Ù.

    
    <?php
    $viewRenderer 
    Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($view)
                 ->
    setViewSuffix('php');
7.8.4.4.2. API

¹«¾ùº¸´Ù ±âº»ÀûÀÎ »ç¿ë¹ýÀº, ´ÜÁö 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);
    [ÁÖÀÇ] ÁÖÀÇ

    setRender() ¹× direct() (Àº)´Â, ½ÇÁ¦·Î´Â ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÏÁö ¾Ê½À´Ï´Ù. ½ÇÁ¦·Î ·»´õ¸µÀ» ½Ç½ÃÇÏ´Â °ÍÀº postDispatch() (ÀÌ)³ª render() ±×¸®°í, ±×·¯ÇÑ ¸Þ¼Òµå¿¡ ´ëÇÑ ÈùÆ®¸¦ Áö½ÃÇÒ »ÓÀÔ´Ï´Ù.

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 (Àº)´Â, ÆÐ½ºÀÇ Á¤±ÔÈ­¸¦ ½Ç½ÃÇØ ºä½ºÅ©¸³Æ®¿¡ ÀÇÇÑ °Ë»öÀ» °£´ÜÇÏ°Ô ÇÕ´Ï´Ù. µðÆúÆ®ÀÇ ·êÀº ´ÙÀ½°ú °°Àº °ÍÀÔ´Ï´Ù.

  • :module: CamelCase Çü½ÄÀÇ ´Ü¾î°¡ µ¥½¬·Î ºÐÇÒµÇ¾î ¸ðµÎ ¼Ò¹®ÀÚ°¡ µË´Ï´Ù.¿¹¸¦ µé¾î "FooBarBaz" ÇÏ "foo-bar-baz" µË´Ï´Ù.

    ³»ºÎÀûÀ¸·Î´Â, ÀÎÈÄ·¹Å©Å¸´Â ÇÊÅÍ Zend_Filter_Word_CamelCaseToDash ¹× Zend_Filter_StringToLower (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

  • :controller: CamelCase Çü½ÄÀÇ ´Ü¾î°¡ µ¥½¬·Î ºÐÇÒµÇ¾î ¾ð´õ ½ºÄھƴ µð·ºÅ丮 ´Ü¶ô ¹®ÀÚ¿¡ º¯È¯µÇ¾î ¸ðµÎ ¼Ò¹®ÀÚ°¡ µË´Ï´Ù.¿¹¸¦ µé¾î "FooBar" ÇÏ "foo-bar" µÇ¾î, ±×¸®°í "FooBar_Admin" ÇÏ "foo-bar/admin" µË´Ï´Ù.

    ³»ºÎÀûÀ¸·Î´Â, ÀÎÈÄ·¹Å©Å¸´Â ÇÊÅÍ Zend_Filter_Word_CamelCaseToDash, Zend_Filter_Word_UnderscoreToSeparator ¹× Zend_Filter_StringToLower (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

  • :action: CamelCase Çü½ÄÀÇ ´Ü¾î°¡ µ¥½¬·Î ºÐÇÒµÇ¾î ¿µ¼ýÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚ´Â µ¥½¬¿¡ º¯È¯µÇ¾î ¸ðµÎ ¼Ò¹®ÀÚ°¡ µË´Ï´Ù.¿¹¸¦ µé¾î "fooBar" ÇÏ "foo-bar" µÇ¾î,"foo-barBaz" ÇÏ "foo-bar-baz" µË´Ï´Ù.

    ³»ºÎÀûÀ¸·Î´Â, ÀÎÈÄ·¹Å©Å¸´Â ÇÊÅÍ Zend_Filter_Word_CamelCaseToDash, Zend_Filter_PregReplace ¹× Zend_Filter_StringToLower (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.

ViewRenderer API ÀÇ ¸¶Áö¸·¿¡ ¼Ò°³ÇÏ´Â °ÍÀº, ½ÇÁ¦·Î ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÏ´Â ¸Þ¼Òµå¿Í ºäÀÇ ·»´õ¸µÀ» ½Ç½ÃÇÏ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.ÀÌÇϸ¦ ºÁ ÁÖ¼¼¿ä.

  • renderScript($script, $name) (Àº)´Â, ÁöÁ¤ÇÑ ÆÐ½ºÀÇ ½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù. ¿É¼ÇÀ¸·Î, ÆÐ½º ¼¼±×¸ÕÆ®(segment)ÀÇ À̸§À» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ ,ViewRenderer (Àº)´Â ½ºÅ©¸³Æ®¸íÀ» ÀÚµ¿ÀûÀ¸·Î °áÁ¤ÇÒ °ÍÀº ¾ø½À´Ï´Ù. ±× ´ë½Å¿¡,$script ±×¸®°í ÁöÁ¤µÈ ³»¿ëÀ» Á÷Á¢ ºä¿ÀºêÁ§Æ®ÀÇ render() ¸Þ¼Òµå¿¡ °Ç³×ÁÝ´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    ¸®½ºÆù½º ¿ÀºêÁ§Æ®¿¡ ºä°¡ ·»´õ¸µ µÇ¸é, ÀÚµ¿ÀûÀ¸·Î noRender (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, °°Àº ºä½ºÅ©¸³Æ®¸¦ Ʋ·Á ¿©·¯ Â÷·Ê ·»´õ¸µ ÇØ ¹ö¸®´Â °ÍÀ» ¸·½À´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    µðÆúÆ®¿¡¼­´Â, Zend_Controller_Action::renderScript() ÇÏ ViewRenderer ÀÇ renderScript() ¸Þ¼Òµå¿¡ÀÇ ÇÁ·Ï½Ã°¡ µË´Ï´Ù.

  • getViewScript($action, $vars) (Àº)´Â, °Ç³×¹ÞÀº ¾×¼ÇÀ̳ª $vars ±×¸®°í ÁöÁ¤ÇÑ º¯¼öÀÇ °ª¿¡ ±Ù°ÅÇØ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù. $vars ¹è¿­ÀÇ Å°´Â, ÆÐ½º¸¦ ÁöÁ¤Çϱâ À§ÇÑ Å° ('moduleDir','module','controller','action' ¹× 'suffix') ÀÇ ¾ðÁ¨°¡µË´Ï´Ù.°Ç³×¹ÞÀº º¯¼öÀÇ °ªÀ» ±âÃÊ·Î ÇØ¼­ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ¾Æ¹«°Íµµ °Ç³×¹ÞÁö ¾Ê¾Ò´ø °æ¿ì´Â, ÇöÀçÀÇ ¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» ±âÃÊ·Î ÇØ¼­ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

    getViewScript() (Àº)´Â,noController Ç÷¡±×ÀÇ ³»¿ë¿¡ ÀÇÇØ¼­ viewScriptPathSpec ȤÀº viewScriptPathNoControllerSpec ÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇÕ´Ï´Ù.

    ¸ðµâ¸íÀ̳ª ÄÜÆ®·Ñ·¯¸í, ¾×¼Ç¸í¿¡ ³ªÅ¸³­´Ù ´Ü¾îÀÇ ´Ü¶ôÀº, µ¥½¬ ('-') (À¸)·Î ¿Å°ÜÁý´Ï´Ù. µû¶ó¼­, ¿¹¸¦ µé¾î ÄÜÆ®·Ñ·¯¸íÀÌ 'foo.bar' ±×¸®°í ¾×¼Ç¸íÀÌ 'baz:bat' (À̾ú)¿´´Ù°í Çϸé, µðÆúÆ®ÀÇ ÆÐ½º ÁöÁ¤À» ±âÃÊ·Î ÇÑ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º´Â 'foo-bar/baz-bat.phtml' µË´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    µðÆúÆ®¿¡¼­´Â, Zend_Controller_Action::getViewScript() ÇÏ ViewRenderer ÀÇ getViewScript() ¸Þ¼Òµå¿¡ÀÇ ÇÁ·Ï½Ã°¡ µË´Ï´Ù.

  • render($action, $name, $noController) (Àº)´Â, ¿ì¼± $name ȤÀº $noController ÇÏÁö¸¸ ÁöÁ¤µÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì´Â,ViewRenderer ÀÇ ´ëÀÀÇÏ´Â Ç÷¡±× (°¢°¢ responseSegment (¿Í)°ú noController) (À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½¿¡,$action Àμö°¡ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é, ±×°ÍÀ» getViewScript() ¿¡ °Ç³×ÁÝ´Ï´Ù. ¸¶Áö¸·À¸·Î, ÃëµæÇÑ ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ renderScript() ¿¡ °Ç³×ÁÝ´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    render() (À»)¸¦ »ç¿ëÇÒ ¶§ , ±× ºÎÀÛ¿ë¿¡ ÁÖÀÇÇսôÙ. ¸®½ºÆù½º ¼¼±×¸ÕÆ®(segment)¸íÀ̳ª noController Ç÷¡±×·Î ÁöÁ¤ÇÑ ³»¿ëÀº, ±× ¿ÀºêÁ§Æ®³»¿¡¼­ °è¼Ó ³²½À´Ï´Ù. °Ô´Ù°¡ ·»´õ¸µÀÌ ¿Ï·áÇßÀ» ¶§¿¡ noRender µµ ¼³Á¤µË´Ï´Ù.

    [ÁÖÀÇ] ÁÖÀÇ

    µðÆúÆ®¿¡¼­´Â, Zend_Controller_Action::render() ÇÏ ViewRenderer ÀÇ render() ¸Þ¼Òµå¿¡ÀÇ ÇÁ·Ï½Ã°¡ µË´Ï´Ù.

  • renderBySpec($action, $vars, $name) (Àº)´Â, ÆÐ½º ÁöÁ¤¿ëÀÇ º¯¼ö¸¦ °Ç³×ÁÖ¾î ºä½ºÅ©¸³Æ®ÀÇ ÆÐ½º¸¦ °áÁ¤ÇÕ´Ï´Ù. $action ¹× $vars ÀÇ ³»¿ëÀ» getScriptPath() ¿¡, ±×¸®°í ±× °á°ú ¾òÀ» ¼ö ÀÖ´ø ½ºÅ©¸³Æ®ÀÇ ÆÐ½º¿Í $name (À»)¸¦ renderScript() ¿¡ °Ç³×ÁÝ´Ï´Ù.

7.8.4.4.3. ±âº»ÀûÀÎ »ç¿ë¿¹

·Ê 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 (À»)¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ViewRenderer (Àº)´Â, ÄÜÆ®·Ñ·¯¸í¾È¿¡ ÀÖ´Â ÆÐ½º ´Ü¶ô ¹®ÀÚ¸¦ ½ÇÁ¦ÀÇ ÆÐ½º ´Ü¶ô ¹®ÀÚ ('/') ¿¡ ¿Å°Ü³õ¾Æ ´Ü¾î ´Ü¶ô ¹®ÀÚ¸¦ µ¥½¬ ('-') ¿¡ ¿Å°Ü³õ¾Æ ÆÐ½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.µû¶ó¼­, ¾×¼Ç /foo.bar/baz.bat (À»)¸¦ ÄÝ Çϸé FooBarController.php ÀÇ FooBarController::bazBatAction() ¿¡ µð½ºÆÌÄ¡ µÇ¾î foo-bar/baz-bat.phtml (À»)¸¦ ·»´õ¸µ ÇÏ°Ô µË´Ï´Ù. ¶Ç, ¾×¼Ç /bar_baz/baz-bat (À»)¸¦ ÄÝ Çϸé Bar/BazController.php (ÆÐ½º ´Ü¶ô ¹®ÀÚ¿¡ ÁÖÀÇ) ÀÇ Bar_BazController::bazBatAction() ¿¡ µð½ºÆÌÄ¡ µÇ¾îbar/baz/baz-bat.phtml (À»)¸¦ ·»´õ¸µ ÇÏ°Ô µË´Ï´Ù.

µÎ¹øÂ°ÀÇ ¿¹¿¡¼­´Â, ¸ðµâÀº µðÆúÆ® ¸ðµâÀΠäÀÎ °Í¿¡ ÁÖÀÇÇսôÙ. ±×·¯³ª, ÆÐ½º ´Ü¶ô ¹®ÀÚ°¡ ÀÖ±â À§Çؼ­, Bar/BazController.php ¿¡ ÀÖ´Ù Bar_BazController (À»)¸¦ ¹Þ°Ô µË´Ï´Ù. ºä·»´Ù¶ó´Â ÄÜÆ®·Ñ·¯ÀÇ µð·ºÅ丮 °èÃþÀ» ¸ð¹æÇÕ´Ï´Ù.

·Ê 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();
    }
}

[ÁÖÀÇ] ÁÖÀÇ

´ëºÎºÐÀÇ °æ¿ì´Â, ÀÚµ¿ ·»´õ¸µÀ» Àüü·Î ¹«È¿·Î ÇÑ´Ù (setNeverRender()) ÀÇ´Â ¹«ÀǹÌÇÕ´Ï´Ù. ¿Ö³ÄÇϸé,ViewRenderer ÀÇ À¯ÀÏÇÑ Á¸Àç ÀÇÀǰ¡, ºä¿ÀºêÁ§Æ®¸¦ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù.

·Ê 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.8.4.4.4. °íµµÀÇ »ç¿ë¿¹

·Ê 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 ÇÏÁö¸¸ ÀÚµ¿ÀûÀ¸·Î ºä½ºÅ©¸³Æ®¸¦ ·»´õ¸µ ÇÕ´Ï´Ù
    
}
}

7.8.5. µ¶ÀÚÀûÀÎ ÇïÆÛÀÇ ÀÛ¼º

¾×¼Ç ÇïÆÛ´Â, Ãß»ó Ŭ·¡½º 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 ¸Þ¼Òµå°¡ Á¤Àǵǰí ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇØ °Ç³×¹ÞÀº Àμö·Î ±× ¸Þ¼Òµå¸¦ ÄÝ Çϰí ÀÖ½À´Ï´Ù.

µ¶ÀÚÀûÀÎ ÇïÆÛ Ŭ·¡½º¸¦ ÀÛ¼ºÇßÀ» °æ¿ì´Â, À§¿¡¼­ ¼³¸íÇÑ °Íó·³ ÇØ ±×°ÍÀ» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØ µÓ½Ã´Ù.