2009年3月9日星期一

Re: [fw-mvc] ActionStack Question

I may find out where the problem is it.

Even if the responseSegment is supplied on the action this param should be manually set to setResponseSegment.... Like that:

So seems there is no way to directly tell the response Segment to ActionStack plugin...


class My_Controller_Action extends Zend_Controller_Action
{
    public function preDispatch()
    {
        $position = $this->_request->getParam('responseSegment', false);
        if ($position) {
            $this->_helper->viewRenderer->setResponseSegment($position);
        }
    }
}

keith Pope wrote:
Your code looks fine, I cant see the why you would be getting different output than expected as your layout controls this. Are you sure you are writing the response segments correctly?  Also I would use Zend_Controller_Request_Simple instead of cloning the $request object.  Here is one of mine:  $categoryRequest = new Zend_Controller_Request_Simple();         $categoryRequest->setControllerName('category')                         ->setActionName('index')                         ->setParam('responseSegment', 'categoryMain');  2009/3/9 Cristian Bichis <contact@zftutorials.com>:   
Hello,  I am trying to migrate one app from action view helper to using mainly Action Stack instead due to performance and not only.  I am naming each zone as zone1, zone2 into layout, and from a controller plugin i am adding the corresponding request to action stack.  // layout.phtml   <div id="zone1"><?=$this->layout()->zone1?></div>     <div id="content"><?=$this->layout()->content?></div>    <div id="zone2"><?=$this->layout()->zone2?></div>  // controller plugin class Default_Plugin_Test extends Zend_Controller_Plugin_Abstract {   protected $_stack;     public function getStack()   {       if (null === $this->_stack) {           $front = Zend_Controller_Front::getInstance();           if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack')) {               $stack = new Zend_Controller_Plugin_ActionStack();               $front->registerPlugin($stack);           } else {               $stack = $front->getPlugin('ActionStack');           }           $this->_stack = $stack;       }       return $this->_stack;   }     public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request)   {       $this->_stack = $this->getStack();             $request1 =  clone($request);       $request1->setControllerName('index')                    ->setActionName('zone1')                    ->setParam('responseSegment', 'zone1');                     $this->_stack->pushStack($request1);             $request2 = clone($request);       $request2->setControllerName('index')                    ->setActionName('zone2')                    ->setParam('responseSegment', 'zone2');                     $this->_stack->pushStack($request2);   } }  //Output:  Content  Zone 2  Zone 1   I got some problems on making Action stack works as supposed, basically as you see from Output, instead to be rendered as:  Zone1 Content Zone2  The final output looks slightly different.  Any ideea why ?   -- Best regards, Cristian Bichis www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com       
     


--  Best regards, Cristian Bichis www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com

没有评论: