在引导程序中配置自动加载器失败

时间:2014-08-10 14:32:01

标签: php zend-framework zend-form

我遵循了一个教程,只是为了深入了解表单主题。

我构建了一个Form类:application / forms / BugReportForm.php 我添加到我的bootstrap.php(在它未使用之前)

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' => 'Form_',
            )
            ),
        ));
        //return it ao sthat istcan stored in the bootstrap
        return $autoLoader;
    }

我还构建了我的表单/ BugReportForm.php

我的BugController.php看起来像这样:

<?php

class BugController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function submitAction()
    {
        $frmBugReport = new Form_BugReport();
        $frmBugReport = setAction('/bug/submit');
        $frmBugReport = setMethod('post');
        $this->view->form = $frmBugReport;
    }

我的application.ini

[production]
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
phpSettings.date.timezone = "Europe/Berlin"

resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = 
resources.db.params.dbname = TQM
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"


resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

resources.view.doctype = "XHTML1_STRICT"

我收到此错误:在......中找不到类'Form_BugReportForm'

有什么问题,我认为bootstrap不起作用或命名空间不知道?

Folderstructure Folderstructure

folder forms

目前我不使用虚拟主机。

在$ frmBugReport = new Application_Form_BugReportForm()中更改类调用后出现

错误;

fatal error output

hier,例如另一个非常小的形式

<?php
// Formular wird angezeigt bei neue Ebene 1 und editieren
class Application_Form_Hierarchie extends Zend_Form
{

    public function init()
    {
        $this->setName('Ebene1');
        $this->setAttrib('enctype', 'multipart/form-data');         //Formular wird für Dateiuploads verwendet
        $nr = new Zend_Form_Element_Hidden('nr');
        $nr->addFilter('Int');
        $ebene1 = new Zend_Form_Element_Text('ebene1');
            $ebene1->setLabel('Ebene1')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');




        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('nr', 'submitbutton');
        $this->addElements(array($nr, $ebene1, $submit));       //, $imagepreview
    }

}

?>

并从控制器中执行操作(添加):

$form = new Application_Form_Hierarchie();

我尝试了另一个可能性(来自书籍教程)来学习如何使用自己的表单。我想我应该放弃这种情况,然后回到简单的方式。

1 个答案:

答案 0 :(得分:1)

问题可能来自您的应用程序中指定的错误类名。在使用zend from和models时一定要遵循这些规则,你会没事的:

Bootstrap.php文件:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{

       protected function _initAutoload(){
        $resourceLoader= new Zend_Application_Module_Autoloader(
                                     array(   
                                          'namespace' => '',   
                                          'basePath' => APPLICATION_PATH
                                          ));
       $resourceLoader->addResourceType('model', 'models/', 'Model');
       $resourceLoader->addResourceType('form', 'forms/', 'Form');   
       return $resourceLoader;
      }
 }

Zend_Form目录和文件名:

  1. Zend_Form的zend框架中的默认名称空间为表单,它将指向名为表单的文件夹。
  2. 您的表单类名称应以名称空间Form_
  3. 开头
  4. 在表单目录中创建一个yourFormName.php文件。这将是您的Form类文件。
  5. yourFormName.php内创建一个类Form_yourFormName.php
  6. yourFormName.php:

    class Form_yourFormName extends Zend_Form
      {
      public function init()
      {
          //your form codes goes here like creating form elements
      }
     }
    

    然后在你的控制器中获取你定义的表单类的实例:

    class YourController extends Zend_Controller_Action
     {
    public function indexAction()
    {
       $form = new Form_yourFormName();
       $this->view->form = $form;
    }
    }
    

    编辑:对于您的情况,它应该是:

        $frmBugReport = new Form_BugReportForm();
    

    不是:

       $frmBugReport = new Form_BugReport();
    

    希望这会对你有所帮助。