0

adminとfrontモジュールの2つのモジュールをカバーする小さな(非常に小さな)zendプロジェクトがあります。また、「フロント」モジュールの下にフォームを作成することもでき、フロントモジュールのコントローラーでも使用できました。さて、私の問題は、「admin」モジュールの下にフォームを作成し、それを管理コントローラーでも使用すると、phpがクラスの場所を検出できなくなることです。したがって、このエラーが表示されます。

Fatal error: Class 'Admin_Form_Login' not found in C:\xampp\htdocs\projects\zend\finder\application\modules\admin\controllers\IndexController.php on line 18

私は非常に混乱していたので、フロントモジュールでは機能していますが、管理モジュールでは、作成と使用方法が非常に似ているため、失敗します。注:フォームの作成にはzfツールを使用しました。

これが私のapplication.iniです、多分これは役立つかもしれません。

phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

resources.modules[] =

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

resources.view.helperPath.Finder_View_Helper = APPLICATION_PATH "/../library/Finder/View/Helper"

これにはZend1.11.12を使用しています。

前もって感謝します。

4

4 に答える 4

2

ライブラリにフォームを追加する場合は、モジュール'/ modules / Admin / Controllers etc'フォルダーではなく、library / admin / form / login.phpにフォームを追加します(パスの大文字と小文字を適宜変更します)。これが適切な点かどうかはわかりませんが、とにかくそれを作りました...

次に、application.iniのautoLoadNamespacesを使用してモジュールをロードし、Adminフォルダーがライブラリフォルダーにあることを確認します。

于 2012-09-06T14:42:09.377 に答える
2

他のすべてが正常に見えるので、モジュールブートストラップクラスがないと思います。したがって、必要なapplication/modules/admin/Bootstrap.phpのは、次を含むファイルを作成することだけです。

<?php

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

これはアプリケーションのブートストラップによって実行され、Zend_Application_Module_Bootstrapデフォルトでモジュールリソースオートローダーのインスタンスが設定されます。これにより、で始まるリソースクラスが有効になりAdmin_ます。

于 2012-09-06T15:02:03.137 に答える
0

それらのフォームの名前空間を宣言しましたか?私のモジュールのBootstrap.php(/application/modules/admin/Bootstrap.php)では、次のコードを使用しています。

    //Loads the autoloader resources

    $moduleName = 'admin';
    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'basePath' => APPLICATION_PATH ."/modules/".$moduleName."/",
            'namespace' => '',
            'resourceTypes' => array(
                    //Tells the application where to find the forms
                    'form' => array(
                            'path' => 'forms/',
                            'namespace' => ucfirst($moduleName).'_Form_'
                    ),
                    //Tells the application where to find the models
                    'model' => array(
                            'path' => 'models/',
                            'namespace' => ucfirst($moduleName).'_Model_'
                    )
            ),
    ));
于 2012-09-06T14:37:49.227 に答える
0

私が見たところ、あなたはAdmin名前空間をオートローダーに追加していませんでした。Autloaderを使用していて、フォームがinclude_dir / Admin / Form / Login.phpの下にある場合は、試してください。

autoloaderNamespaces[] = "Admin_"

あなたの設定で。

オートローダーに関する詳細情報

于 2012-09-06T14:38:15.943 に答える