【问题标题】:Zend: Unable to access form in controllerZend:无法访问控制器中的表单
【发布时间】:2011-05-15 05:36:06
【问题描述】:

首先我使用 Zend_Tool 创建了一个项目。然后在默认模块中创建一个控制器AuthenticationController

projectfolder/application/forms/Login.php

中创建表单
class Forms_Login extends Zend_Form {
    public function _construct() {
        // add elements
    }
}

myproject/application/controllers/AuthenticationController.php中访问表单

public function loginAction() {
   $this->view->form = new Form_Login();
}

我收到以下错误:

Fatal error: Class 'Application_Forms_Login' not found in /var/www/student/application/controllers/AuthenticationController.php on line 19

如何在不包含此文件在 AuthenticationController 中的情况下使用相同的表单类名访问它?

可能我必须在 Bootstrap.php 中告诉 zend,但我无法找到示例代码。

谢谢

【问题讨论】:

    标签: php zend-framework forms


    【解决方案1】:

    你应该像这样在你的bootstrap.php文件中声明它们:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function _initAutoload()
        {
            $autoLoader=Zend_Loader_Autoloader::getInstance();
            $resourceLoader=new Zend_Loader_Autoloader_Resource(array(
                'basePath'=>APPLICATION_PATH,
                'namespace'=>'',
                'resourceTypes'=>array(
                    'form'=>array(
                        'path'=>'forms/',
                        'namespace'=>'Forms_'
                    )                
                )
    
                ));
    
    
            $autoLoader->pushAutoloader($resourceLoader);
    
    
    
    
        }
    
    
    }
    

    【讨论】:

    • IIRC 自动加载前缀也带有默认值,所以如果你不想弄乱自动加载器,你可以将你的表单命名为 Default_Form_Login
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多