$ this-> view-> layout() - > setContentKey('')问题!

时间:2011-04-15 15:50:21

标签: zend-framework plugins layout view

我设置了一个新的 contentkey ,用于在我网站的右栏显示菜单。就像这样:

public function menuAction()
{        
    $this->view->layout()->setContentKey('menu');

}

这是布局代码:

<div class="center_col"><?php echo $this->layout()->content; ?></div>
<div class="right_col"><?php echo $this->layout()->menu; ?></div>

但有一个问题!!设置菜单contentKey后,右栏中显示的每个动作结果(内容不起作用!)

我有一个菜单动作的插件,我认为这是reasone!

这是我的插件:

class Places_Controller_Plugin_ActionSetup extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request)
{
    $front = Zend_Controller_Front::getInstance();

    if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack')) {
            $actionStack = new Zend_Controller_Plugin_ActionStack();
            $front->registerPlugin($actionStack, 97);
        } else {
        $actionStack = $front->getPlugin('Zend_Controller_Plugin_ActionStack');
    }

        $menuAction = clone($request);
        $menuAction->setActionName('menu')->setControllerName('index');
        $actionStack->pushStack($menuAction);

}}

我在所有页面都有一个菜单动作调用,所以我使用这个插件!

有没有办法解决我的问题?!​​


回答Marcin和SMka的帮助:

 public function menuAction()
{        

    $this->view->placeholder("menu")
                  ->append($this->view->render("menu/menu.phtml" ));

}

1 个答案:

答案 0 :(得分:1)

在您的菜单操作中

只需渲染到命名段

// Renders my/login.phtml to the 'form' segment of the
// response object
$this->render('login', 'form');

不需要layout()->setContentKey,此方法适用于其他事项