我有一個ViewHelper
並希望在Module#getViewHelperConfig()
將其初始化:如何在Zend Framewok 2中的模塊#getViewHelperConfig()調用服務定位器對象上的自定義服務?
<?php
namespace Search;
use statements...
class Module implements
ConfigProviderInterface,
ServiceProviderInterface,
AutoloaderProviderInterface,
ViewHelperProviderInterface {
public function getConfig() ...
public function getAutoloaderConfig() ...
public function getServiceConfig() {
$breakpoint = null;
try {
return array (
'factories' => array(
...
'SearchFormCourseSearchForm' => function ($serviceManager) {
$cacheService = $serviceManager->get('Cache\Model\CityStorage');
$cities = $cacheService->getCities();
$searchForm = new Form\CourseSearchForm($cities);
return $searchForm;
},
)
);
} ...
}
public function getViewHelperConfig() {
$breakpoint = null;
return array(
'factories' => array(
'searhForm' => function($serviceManager) {
$helper = new View\Helper\SearchForm(array('render' => true, 'redirect' => false));
$helper->setViewTemplate('search/search/search-courses');
$searchForm = $serviceManager->get('SearchFormCourseSearchForm');
$helper->setSearchForm($searchForm);
return $helper;
}
)
);
}
但ZF不叫我的工廠。取而代之的是它試圖創建一個新的SearchFormCourseSearchForm
實例:
Fatal error: Uncaught exception 'Zend\ServiceManager\Exception\ServiceNotFoundException' with message 'Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for SearchFormCourseSearchForm' in /var/www/bar/foo/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 456
我應該如何使用服務工廠從Module#getServiceConfig()
創造了在Module#getViewHelperConfig()
一個ViewHelper
?
謝謝,作品!嗯,我對「主」服務定位器一無所知。我認爲,整個應用程序只有一個「中央」服務定位器... – automatix 2013-04-10 13:47:15
我認爲[this](http://juriansluiman.nl/en/article/120/using-zend-framework-service-managers-在你的應用程序)博客文章做了很好的解釋:) – 2013-04-10 13:52:23