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

Php 在引导中配置自动加载程序失败,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,我遵循一个教程只是为了更深入地了解表单主题 我构建了一个表单类:application/forms/BugReportForm.php 我在bootstrap.php中添加了(未使用之前) 我还构建了我的表单/BugReportForm.php My BugController.php如下所示: <?php class BugController extends Zend_Controller_Action { public function init() {

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

我构建了一个表单类:application/forms/BugReportForm.php 我在bootstrap.php中添加了(未使用之前)

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

My 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;
    }
我得到这个错误:在…中找不到类'Form_BugReportForm'

有什么不对,我认为引导程序不起作用或者名称空间不知道

折叠结构

目前我不使用虚拟主机

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

例如,另一种非常小的形式

<?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
    }

}

?>

我尝试了另一种可能性(来自书本教程)来学习如何使用自己的FormClass。我想我应该放弃Turial,回到简单的方法。

问题可能来自应用程序中指定的错误类名。在使用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;
      }
 }
class Form_yourFormName extends Zend_Form
  {
  public function init()
  {
      //your form codes goes here like creating form elements
  }
 }
Zend\u表单目录和文件名:

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;
      }
 }
class Form_yourFormName extends Zend_Form
  {
  public function init()
  {
      //your form codes goes here like creating form elements
  }
 }
  • zend framework中
    zend_Form
    的默认名称空间为Form,它将指向名为forms的文件夹
  • 您的表单类名应以命名空间开头,如
    form\uu
  • 在表单目录中创建一个文件,名为
    yourFormName.php
    。这将是您的表单类文件
  • yourFormName.php内部
    创建一个类作为
    Form\u yourFormName.php
  • yourFormName.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;
          }
     }
    
    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();
    

    希望这对您有所帮助。

    请提供BugReportForm的代码。谢谢您的评论,在这里,类的头:class Form_BugReportForm扩展了Zend_Form/forms/BugReportForm.phSphere是错误:致命错误:在控制器的第15行的C:\wamp\www\cheyenne\application\controllers\BugController.php中找不到class'Form_BugReportForm':$frmburgreport=new Form_BugReportForm();你能给出你的应用程序的文件夹结构吗?您是否在使用virtualhost?是的,我已经在PostingTanks中输入了我的formclass的头:class Form_BugReportForm扩展了Zend_Form文件名是:/forms/BugReportForm.php此处实例化对象:$frmBugReport=new Form_BugReportForm();谢谢你的另一个想法我再次检查了每个名字,但我没有看到错误