Php 在Zend Framewok插件中,如何模拟$this->;视图->;foo=。。。;?

Php 在Zend Framewok插件中,如何模拟$this->;视图->;foo=。。。;?,php,zend-framework,Php,Zend Framework,我写了一个小插件,所以我可以在每个视图中获得控制器的名称。 但是idk如何“传递”一个参数到视图(像$this->view->foo=…;这样做) 我可以写什么来代替$this->view->controllerName,这样它就可以工作了?您可以使用助手代理来获取视图的实例。像这样的方法应该会奏效: Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view->foo = 'bar';

我写了一个小插件,所以我可以在每个视图中获得控制器的名称。 但是idk如何“传递”一个参数到视图(像$this->view->foo=…;这样做)


我可以写什么来代替$this->view->controllerName,这样它就可以工作了?

您可以使用助手代理来获取视图的实例。像这样的方法应该会奏效:

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

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

以这个例子为基础:

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();

    }
}

它告诉我们一个致命错误:在第489行的C:\wamp\www\OutOfScopes\OutOfScopes\library\Zend\Controller\Action\Helper\ViewRenderer.php中调用未定义的方法stdClass::getscriptpath(),这是什么意思?(相关)
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();

    }
}