Zend_Applicationを使用してアプリケーションをセットアップしました。_initAutoload()
Bootstrap.phpに次のようなメソッドがあります。
public function _initAutoload(){
$this->bootstrap("frontController");
$front = $this->frontController;
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Client_');
$autoloader->registerNamespace('Frontend_');
$autoloader->registerNamespace('Global_');
$autoloader->registerNamespace('Global_Helper_');
$autoloader->setFallbackAutoloader(true);
$modules = $front->getControllerDirectory();
$default = $front->getDefaultModule();
foreach (array_keys($modules) as $module) {
if ($module === $default) {
continue;
}
$autoloader->pushAutoloader(new Zend_Application_Module_Autoloader(array(
"namespace" => ucwords($module),
"basePath" => $front->getModuleDirectory($module),
)));
}
return $autoloader;
}
デフォルトのモジュールにもプレフィックスを付けるようにFrontControllerを設定しました(私にはもっと論理的だと思います) $front->setParam("prefixDefaultModule", true)
私は通常のディレクトリ構造を持っていると思います。
問題:
私が持っているすべてのモジュールにサブドメインを設定しました。メインのメインドメイン(www)ではすべて正常に動作します。メインモジュールはフロントエンドです。フロントエンドがデフォルトのモジュールである場合、スタッフは機能します:)。Ok。今。すべてのサブドメインについて、同じindex.phpがありますが、env値が変更されています。クライアントサブドメインの場合、env値はclientなどです。各env値は、私のapplication.xmlセクションに対応します。各application.xmlサブドメインセクション(client、apiなど)は、デフォルトと呼ばれるメインセクションを拡張します(現在、エラーなどを有効にするテストセクションもあるため、すべてのサブドメインがテストを拡張し、testingがデフォルトを拡張します)。
application.xmlの各サブドメインセクションは、デフォルトのモジュール名を変更します。したがって、セクションのデフォルトはフロントエンド、セクションクライアントのデフォルトはクライアントなどです。
domain.com/clientまたはdomain.com/api
にアクセスすると、問題ありません。APIとクライアントの両方がClient_Model_NameOfTheModelを使用し、想定どおりに、application / modules / client / models/NameOfTheModel.phpとDbTable/NameOfTheModel.phpにあります
。
しかし、それぞれのサブドメイン(client.domain.com、 api.domain.com など)からモジュールにアクセスし、デフォルトのモジュールがフロントエンドからそれぞれのサブドメインモジュール名に変更された場合、動作を終了します。その「スタックトレース」も出力しません。
警告:include(Client / Model / ContactLists.php)[function.include]:ストリームを開くことができませんでした:[heres-my-path-to-root]/library/Zend/Loader.phpオンラインにそのようなファイルまたはディレクトリはありません136
警告:include()[function.include]:インクルードのために'Client / Model / ContactLists.php'を開くことができませんでした(include_path ='[heres-my-path-to-root] / library:。:/ usr / lib / php :/usr/local/lib/php')[heres-my-path-to-root]/library/Zend/Loader.phpの136行目
致命的なエラー:クラス'Client_Model_ContactLists'が[heres-my-path-to-root]/application/modules/client/controllers/ContactListsController.phpの4行目に見つかりません
私はそれを機能させるために2日間試しました。そうではありません。これはデフォルトのドメインでのみ機能し、application.xmlがデフォルトのモジュールをサブドメイン名に変更した場合は機能しません。そのように。この点は現在非常に重要です。続行できず、このアプリは今週の終わりまでにサンドボックスから外れる必要があるためです(初期のベータ版)。
アドバイスをありがとうございます。
PS。英語が下手でごめんなさい。私の母国語ではありません