在Zend-Framework插件中,如何做类似于$ this-> view-> foo = ...;?

时间:2010-07-29 13:18:06

标签: php zend-framework

我写了一个小插件,所以我将能够在每个视图中获取控制器的名称。 但是idk如何将一个参数“传递”到视图中(像$ this-> view-> foo = ...;那样求和。)

class Zend_Extension_Controller_Plugin_GetControllerName extends Zend_Controller_Plugin_Abstract
{

    public function __construct()
    {

    }

    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $this->view->controllerName = $request->getControllerName();
    }
}

我能写什么而不是$ this-> view-> controllerName所以它会起作用?

3 个答案:

答案 0 :(得分:1)

试试这个:

$view = Zend_Layout::getMvcInstance()->getView();
$view->controllerName = $request->getControllerName();

答案 1 :(得分:0)

您可以使用帮助程序代理获取视图的实例。这样的事情应该有效:

Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view->foo = 'bar';

答案 2 :(得分:0)

以此为例:

class Plugin_Sidebar extends Zend_Controller_Plugin_Abstract {

    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        if($request->getModuleName() == 'admin')
        {
            return;
        }

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        if (null === $viewRenderer->view) {
            $viewRenderer->initView();
        }
        $view = $viewRenderer->view;


        $Categories = new Model_DbTable_Categories();
        $view->menuItens = $Categories->getMenu();

    }
}