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));
}
工作正常。但是,如果我对同一个小部件调用两次,则该小部件将仅调用一次。 示例:
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 的多个实例?
对不起我的英语。
I’m building a widget system based on Action Helper. Each widget deal with the segment response to modify the render view.
But , I’ve got a problem.
The widgets are calling in a Controller Plugin, in the preDispatch, like this :
// $widgets : list of widget to call
foreach($widgets as $segment =>$widget) {
Zend_Controller_Action_HelperBroker::addHelper(
new $widget($segment));
}
That’s worsk fine. But if I’ve got a same widget call twice, the widget will be calling just one time.
Example :
Zend_Controller_Action_HelperBroker::addHelper(
new Menu_Widget($segment=’menu’),
new Menu_Widget($segment =’right’),
);
If I do a dump to check the stack :
Zend_Debug::dump(Zend_Controller_Action_HelperBroker::getStack());
I can see just one time Menu_Widget in this array.
How can I have multiple instance of a same Action Helper?
Sorry for my english.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,助手经纪人就是为此而设计的——只有一个实例。我要么扩展代理(这没什么意义),要么创建一个类来处理调用。
更新:
制作一个动作/视图助手。为其分配小部件,然后使用它来回显小部件。
IMO the helper broker is made just for that - to have only one instance. I would either extend the Broker (which makes little sense) or create a class that will handle the calls.
Update:
Make a action/view helper. Assign widgets to it and then use it to echo the widgets.