2013-10-04 19 views
0

我有一些模塊的應用程序。其中之一是CourseSearch。現在我想添加一個,SportsPartnerSearch。由於這兩個模塊彼此非常相似,我只需「克隆」/複製CourseSearch並將所有「課程」替換爲「SportsPartner」(在所有變體中:$course$sportsPartnercourse-...phtmlsports-partner-...phtml等),以便編輯第二步的邏輯。現在,我得到以下錯誤:爲什麼ZF2自動加載機會錯誤地建立路徑?

Warning: require_once(/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php): failed to open stream: No such file or directory in /path/to/project/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php on line 140

Fatal error: require_once(): Failed opening required '/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php' (include_path='.:/usr/share/php:/usr/share/pear') in /path/to/project/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php on line 140

爲什麼文件路徑被建立在這樣奇怪的方式:/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php?我在哪裏犯了一個錯誤?


一些附加信息。

該課程由於CourseSearch模塊中的wron路徑爲CourseSearch\View\Helper\CourseSearchForm而無法找到。可以發現,當我停用包含類SportsPartnerSearch\View\Helper\SportsPartnerSearchForm的新模塊SportsPartnerSearch時。

CourseSearchForm視圖助手實例化在CourseSearchForm\Module

class Module { 
    public function getViewHelperConfig() { 
     return array(
      'factories' => array(
       'courseSearchForm' => function($serviceManager) { 
        $helper = new View\Helper\CourseSearchForm(array('render' => true, 'redirect' => false)); 
        // ERROR. This code is not executed anymore. 
        $helper->setViewTemplate('course-search/course-search/course-search-form'); 
        $courseSearchForm = $serviceManager->getServiceLocator()->get('CourseSearch\Form\CourseSearchForm'); 
        $helper->setCourseSearchForm($courseSearchForm); 
        return $helper; 
       } 
      ) 
     ); 
    } 
} 

而且在佈局文件名爲:

echo $this->courseSearchForm(); 

SportsPartnerSearch\View\Helper\SportsPartnerSearchForm實例化以後,以同樣的方式在SportsPartnerSearch\Module#getViewHelperConfig()且尚未叫。

回答

1

您是否生成了類圖?在CourseSearch和SportsPartnerSearch模塊中檢查autoload_classmap.php文件。我想你還有一箇舊的地圖。我認爲這個問題隱藏在classmap中,因爲Zend的ClassMapAutoloader錯誤,而不是標準的自動加載器。

可以生成與ZF2提供的類映射生成一個新的類映射(假設您通過作曲加載):

cd module/SportsPartnerSearch 
../../vendor/bin/classmap_generator.php 

這將產生SportsPartnerSearch模塊內一個新的類映射文件。

+0

非常感謝!有用!它現在也可以在沒有生成classmaps的情況下運行。昨天我清理了我的'autoload_classmap.php'文件,沒有用它們嘗試,但是錯誤仍然存​​在。現在我再次生成了classmaps(它工作),並再次清理地圖,現在它也基於命名空間。所以,我想,昨天我忘了清理一個classmap。 – automatix

相關問題