Zend无法找到表格

时间:2012-09-06 14:26:24

标签: php class zend-framework

我有一个小型(非常小)的zend项目,涵盖了两个模块,即admin和front模块。我还设法在'front'模块下创建了一个表单,并且也能够在前端模块的控制器中使用它。现在,我的问题是,当我在'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"

我正在使用Zend 1.11.12。

提前致谢。

4 个答案:

答案 0 :(得分:2)

如果要将一个表单添加到库中,那么您需要它在library / admin / form / login.php中(相应地改变路径的情况) - 而不是在模块'/ modules / Admin / Controllers etc.'文件夹中。我不确定这是否是一个相关点,但无论如何我都做到了......

然后确保使用application.ini中的autoLoadNamespaces加载模块,Admin文件夹应位于库文件夹中。

答案 1 :(得分:2)

我猜你没有模块引导类,因为其他一切看起来都很好。所以你需要做的就是在application/modules/admin/Bootstrap.php创建一个包含以下内容的文件:

<?php

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

这将由您的应用程序引导程序运行,Zend_Application_Module_Bootstrap默认设置模块资源自动加载器的实例,该实例将依次启用以Admin_开头的资源类。

答案 2 :(得分: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_'
                    )
            ),
    ));

答案 3 :(得分:0)

从我看到你没有将Admin命名空间添加到自动加载器。 如果您使用的是Autloader,并且表单位于include_dir / Admin / Form / Login.php下,请尝试

autoloaderNamespaces[] = "Admin_"

在你的配置中。

More Info about the Autoloader