如果我在模块类别中有一个服务管理器,例如,我可以从模块应用程序中的类别读取吗?
我在Application的Module.php中已经这样做了,'list-category'位于模块的module.config.php文件中:
public function onDispatch(MvcEvent $e)
{
// get service manager from the application object
$sm = $e->getApplication()->getServiceManager();
// get categories service
$categories = $sm->get('list-category');
// get view model
$vm = $e->getViewModel();
// store category list in a variable
$vm->setVariable('categories', $categories);
}
我已经在应用程序的模块类别中阅读了服务管理器。
答案 0 :(得分:1)
是的,您可以使用模块A
中模块B
中添加到服务管理器的服务。这些服务只是添加到不同模块中的服务管理器,但是可以跨模块使用,因为配置文件由模块管理器合并在一起,然后交给服务管理器。这就是为什么命名服务名称以避免命名跨模块的冲突是一个好主意。只需像往常一样抓取它,它应该可以工作。
关于您提供的代码,那么问题是什么?它不起作用吗?你有任何错误吗? $categories
的内容是什么?您是否将您的功能附加到活动管理器?如果没有,那么this article会向您展示如何完成。此外,请仔细考虑是否要对Category
模块中的每个页面请求执行此类操作。我不知道你的推理,但是为了在每个页面加载上做这样的事情,你应该有充分的理由这样做。