Ik krijg een 'class not found error' die ik niet begrijp. Ik heb een nieuwe module toegevoegd aan een bestaande applicatie, nl overzichten.
In de controller Indexcontroller roep ik de volgende class aan om een form te laden:

<?php
class Overzichten_OverzichtenController extends Wis_Controller_Abstract
{
    public function init()
    {
       
    }

    public function indexAction()
    {
        $form = new Overzichten_Form_Rapportage();
		$this->view->form = $form;
?>

Ik verwacht dat deze class dan wordt aangeroepen:

<?php
class Overzichten_Form_Rapportage extends Wis_Form_Abstract
{
    public function init()
    {
        $this->setSubForms(array(

?>

De structuur is als volgt:
application - modules - overzichten - controllers - OverzichtenController.php en
application - modules - overzichten - forms - Rapportage.php

Echter als ik in de controller een form uit een andere module aanroep op dezelfde wijze gaat het wel goed.

In de Zend autoloader staat:

  'form'    => array(
                'namespace' => 'Form',
                'path'      => 'forms',


en elke module heeft zijn eigen bootstrap.
De foutmelding is Fatal error: Class 'Overzichten_Form_Rapportage' not found in /var/www3/HRM/application/modules/overzichten/controllers/OverzichtenController.php on line 11.

Wie heeft een idee waar dit aan kan liggen?
Ik heb al eens eerder een nieuwe module toegevoegd op dezelfde wijze en dat ging wel goed.
Je eerste stukje code:

<?php
$form = new Overzichten_Form_Rapportage();
?>

Omdat je namespaces gebruikt zul je of bovenin je bestand moeten zetten:
<?php
use application\modules\overzichten\controllers\Overzichten_Form_Rapportage;
?>

Als alternatief kun je ook de complete class naam opgeven:
<?php
$form = new \application\modules\overzichten\controllers\Overzichten_Form_Rapportage();
?>

Merk op dat / in Frank's bericht \ moet worden en dat het verstandig is FQCN (dus met \ ervoor) te gebruiken in het laatste code block.
Dankjewel Frank voor de tip maar helaas, beide opties geven nog steeds dezelfde foutmelding.
Klopt je path wel?


'path' => 'forms'

Moet je daar niet het volledige path invullen?


'path' => 'het/volledige/path/naar/forms'
De autoloader wordt voor alle modules gebruikt dus is een relatief pad.
In de andere modules wordt het precies zo gedaan en daar werkt het gewoon.
Ook als in een form uit een andere module aanroep op deze plek werkt het, bv naar een formulier uit de ict module

   $form = new Ict_Form_Inname();

Post hier eens even die class.
Bij deze. Was trouwens inname en niet administratie, heb het gewijzigd in vorige post.

<?php
class Ict_Form_Inname extends Wis_Form_Abstract
{
    public function init()
    {
        $status = new Zend_Form_Element_Textarea('status');
        $status
            ->setLabel('status')
            ->setRequired()
        ;

        $this->addElements(array(
            $status
        ));

        $this->addDisplayGroup(array(
            'status'
        ), 'innamegegevens', array('legend' => 'inname', 'class' => 'full'));


        $opslaan = new Wis_Form_Element_Submit('opslaan');

        $this->addElement($opslaan);

        parent::init();
    }
}
Ik bedoelde de class waarin je de class aanroept die niet werkt.
Die staat als eerste in mijn oorspronkelijke post.

Reageren