0

いくつかのモジュールを含むアプリケーションがあります。それらの1つはですCourseSearch。ここで、さらに 1 つ追加したいと思いSportsPartnerSearchます。これら 2 つのモジュールは互いに非常に似ているため、2 番目のロジックを編集するために、単純に「クローン」/コピーしてCourseSearch、すべての「コース」を「SportsPartner」に置き換えました (すべてのバリエーションで: $courseto $sportsPartnercourse-...phtmltosports-partner-...phtmlなど)。ステップ。現在、次のエラーが発生しています。

警告: require_once(/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php): ストリームを開くことができませんでした: /path/to/project/vendor/zendframework にそのようなファイルまたはディレクトリはありません/zendframework/library/Zend/Loader/ClassMapAutoloader.php 行 140

致命的なエラー: require_once(): 必要な '/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php' を開くことができませんでした (include_path='.:/usr/share/php:/usr /share/pear') /path/to/project/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php の 140 行目

ファイルへのパスがこのような奇妙な方法で構築されているのはなぜですか: ? どこで間違いをしましたか?/path/to/project/module/SportsPartnerSearch//src/CourseSearch/View/Helper/CourseSearchForm.php


いくつかの追加情報。

CourseSearch\View\Helper\CourseSearchForm間違ったパスがCourseSearch モジュールにあるために見つからないクラス。SportsPartnerSearchクラスを含む新しいモジュールを非アクティブ化すると、それが見つかりますSportsPartnerSearch\View\Helper\SportsPartnerSearchForm

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()まだ呼び出されていません。

4

1 に答える 1

1

クラスマップを生成しましたか? autoload_classmap.phpCourseSearch モジュールと SportsPartnerSearch モジュールの両方でファイルを確認します。古いクラスマップがまだ残っていると思います。標準のオートローダーではなく、Zend の ClassMapAutoloader のエラーのため、問題はクラスマップ内に隠されていると思います。

ZF2 で提供されているクラスマップ ジェネレーターを使用して新しいクラスマップを生成できます (Composer 経由でロードすると仮定)。

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

これにより、SportsPartnerSearch モジュール内に新しいクラスマップ ファイルが生成されます。

于 2013-10-04T07:21:07.620 に答える