代码之家  ›  专栏  ›  技术社区  ›  pia-sophie

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

  •  0
  • pia-sophie  · 技术社区  · 10 年前

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

    我构建了一个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;
        }
    

    我的应用程序.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”。。。。

    有什么问题,我认为引导不起作用,或者名称空间未知?

    文件夹结构 Folderstructure

    folder forms

    目前我不使用虚拟主机。

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

    fatal error output

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

    <?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 回复  |  直到 10 年前
        1
  •  1
  •   blackbishop    3 年前

    问题可能来自应用程序中指定的类名错误。在使用zend from和模型时,请务必遵守以下规则,这样您就不会有事:

    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框架中的默认名称空间 Zend_Form 类型 它将指向名为 形式 .
    2. 表单类名应以命名空间开头 Form_
    3. 在表单目录中创建文件 yourFormName.php 。这将是您的表单类文件。
    4. 在…内 您的表单名称.php 创建类为 Form_yourFormName.php

    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();