2009年3月9日星期一

[fw-mvc] ActionStack Question

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

没有评论: