Module 如何从Zend Framewok 2中的模块#getViewHelperConfig()调用服务定位器对象上的自定义服务?

Module 如何从Zend Framewok 2中的模块#getViewHelperConfig()调用服务定位器对象上的自定义服务?,module,zend-framework2,factory,view-helpers,service-locator,Module,Zend Framework2,Factory,View Helpers,Service Locator,我有一个ViewHelper,想在模块#getViewHelperConfig()中初始化它: 您需要获取主服务定位器。getViewHelperConfig()中的$serviceManager是视图帮助器服务定位器 要在getViewHelperConfig()函数中获取主服务定位器,请执行以下操作: $maimSm=$serviceManager->getServiceLocator() 因此: public function getViewHelperConfig() { ret

我有一个
ViewHelper
,想在
模块#getViewHelperConfig()
中初始化它:


您需要获取主服务定位器。
getViewHelperConfig()
中的
$serviceManager
是视图帮助器服务定位器

要在
getViewHelperConfig()函数中获取主服务定位器,请执行以下操作:

$maimSm=$serviceManager->getServiceLocator()

因此:

public function getViewHelperConfig() {
    return array(
        'factories' => array(
            'searhForm' => function($serviceManager) {
                $helper = new View\Helper\SearchForm(array('render' => true, 'redirect' => false));
                $helper->setViewTemplate('search/search/search-courses');
                $maimSm = $serviceManager->getServiceLocator();
                $searchForm = $maimSm->get('SearchFormCourseSearchForm');
                $helper->setSearchForm($searchForm);
                return $helper;
            }
        )
    );
}
有相当多的帖子更详细地解释了这一策略,我会去寻找它们

编辑


有关ZF2中服务管理器/定位器的详细说明,请参阅。

谢谢,非常有用!嗯,我对“主”服务定位器一无所知。我想,整个应用程序只有一个“中心”服务定位器……我认为博客文章很好地解释了这一点:)
public function getViewHelperConfig() {
    return array(
        'factories' => array(
            'searhForm' => function($serviceManager) {
                $helper = new View\Helper\SearchForm(array('render' => true, 'redirect' => false));
                $helper->setViewTemplate('search/search/search-courses');
                $maimSm = $serviceManager->getServiceLocator();
                $searchForm = $maimSm->get('SearchFormCourseSearchForm');
                $helper->setSearchForm($searchForm);
                return $helper;
            }
        )
    );
}