【问题标题】:Zend Framework : How can I have multiple instance of an Action Helper?Zend 框架:如何拥有多个动作助手实例?
【发布时间】:2023-03-18 16:41:01
【问题描述】:

我正在构建一个基于 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());

我只能在这个数组中看到一次 Menu_Widget。

我怎样才能拥有同一个 Action Helper 的多个实例?

对不起我的英语。

【问题讨论】:

  • 也许这个link 会给你一些信息。

标签: zend-framework action helper


【解决方案1】:

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

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

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

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

【讨论】:

  • 好吧,我有一个大问题:(。你说“创建一个类”,但我想知道如何处理这个类中的调用。
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多