Zend Forms module includes paths

I am using Zend 1.8.4 and setting up a simple form test. My form class is at './application/forms/SectorSearch.php' and the class name is

<?php
class Form_SectorSearch extends Zend_Form
{...}

      

My controller creates a new form in init () method

<?php
class SectorController extends Zend_Controller_Action
{
    function init()
    {
        $this->initView();
        $form = new Form_SectorSearch(array(
            'method' => '/public/sector/search',
            'action' => 'post'));
        $this->view->form = $form;
    }
..
}

      

But I am getting this error

Warning: Zend_Loader_Autoloader_Resource::include(/home/poconnell/projects/bhaa/application/forms/SectorSearch.php) [zend-loader-autoloader-resource.include]: failed to open stream: No such file or directory in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178

Warning: Zend_Loader_Autoloader_Resource::include() [function.include]: Failed opening '/home/poconnell/projects/bhaa/application/forms/SectorSearch.php' for inclusion (include_path='/home/poconnell/projects/bhaa/library:/home/poconnell/projects/bhaa/application:.:/usr/share/php:/usr/share/pear') in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178

Fatal error: Class 'Form_SectorSearch' not found in /home/poconnell/projects/bhaa/application/controllers/SectorController.php on line 19

      

I'm 100% sure the class is included in the include path.

I think it is a loading problem and this is how I load the default module

protected function _initAutoload()
{   
    //Zend_Loader_Autoloader_Resource  - Zend_Application_Module_Autoloader
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '', 
        'basePath' => APPLICATION_PATH
    ));
    return $moduleLoader;
}

      

I even tried to use this pattern as recommended Loading Modular Forms and Models in Zend Framework 1.8

protected function _initAutoload()
{   
    //Zend_Loader_Autoloader_Resource  - Zend_Application_Module_Autoloader
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '', 
        'basePath' => APPLICATION_PATH,
        'resourceTypes' => array (
            'form' => array(
            'path' => 'forms',
            'namespace' => 'Form'))
    );
    return $moduleLoader;
}

      

but not joy. any ideas?

+2


source to share


3 answers


Make sure the case matches exactly. The folder should be named Forms , unless you have specified another directory for the classes Form

and make sure SectorSearch is not sEcTorSEarcH.php

or something



+1


source


I added the following to my Bootstrap.php file

protected function _initAutoload()
    {
        $autoloader = new Zend_Loader_Autoloader_Resource(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH,
            'resourceTypes' => array(
                'form' => array(
                    'path' => 'forms',
                    'namespace' => 'Form',
                ),
                'model' => array(
                    'path' => 'models',
                    'namespace' => 'Model',
                ),
            )
        ));
        return $autoloader;
    }

      



and now it works, no errors anymore .. damn it I'm glad it works, I almost lost my mind .. :)

+2


source


Zend Framework interprets underscores in class names as folders. If you manually add the application / forms folder to the include path, then instead of Form_SectorSearch, you should name your class FormSectorSearch (and the filename FormSectorSearch.php). Otherwise, you would only add the application folder to the include path and then name the folder Form instead of Forms.

0


source







All Articles