Zend framework Zend Framework:如何拥有一个动作助手的多个实例?

Zend framework Zend Framework:如何拥有一个动作助手的多个实例?,zend-framework,action,helper,Zend Framework,Action,Helper,我正在基于Action Helper构建一个小部件系统。每个小部件处理段响应以修改渲染视图。 但是,我有个问题。 这些小部件在preDispatch中调用一个控制器插件,如下所示: // $widgets : list of widget to call foreach($widgets as $segment =>$widget) { Zend_Controller_Action_HelperBroker::addHelper( new $widget($segment)); } 那很

我正在基于Action Helper构建一个小部件系统。每个小部件处理段响应以修改渲染视图。 但是,我有个问题。 这些小部件在preDispatch中调用一个控制器插件,如下所示:

// $widgets : list of widget to call
foreach($widgets as $segment =>$widget) {
Zend_Controller_Action_HelperBroker::addHelper(
new $widget($segment));
}
那很好。但是如果我有两次相同的小部件调用,小部件将只调用一次。 例如:

Zend_Controller_Action_HelperBroker::addHelper(
new Menu_Widget($segment=’menu’),
new Menu_Widget($segment =’right’),
);
如果我执行转储以检查堆栈:

Zend_Debug::dump(Zend_Controller_Action_HelperBroker::getStack());
我只能在这个数组中看到一个时间菜单小部件

如何拥有同一动作助手的多个实例


对不起,我说的是英语。

我的助手代理就是为了这个目的而设计的——只有一个实例。我要么扩展代理(这没有什么意义),要么创建一个类来处理调用

更新: 制作一个动作/视图辅助对象。将小部件分配给它,然后使用它来回显小部件

// controller
foreach ($this->_helper->widget->getWidgets() as $widget) {
    $widget->setVariablesToView();
}

//view
$this->widget()->getWidget('widgetName'); //view params already set

也许这会给你一些信息。好吧,我有一个大问题:(.你说“创建一个类”,但我想知道如何处理这个类中的调用。