class not found
In de controller Indexcontroller roep ik de volgende class aan om een form te laden:
Code (php)
Ik verwacht dat deze class dan wordt aangeroepen:
Code (php)
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:
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.
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken. Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt![/modedit]
Gewijzigd op 05/09/2014 15:52:11 door Gert Assen
Omdat je namespaces gebruikt zul je of bovenin je bestand moeten zetten:
Als alternatief kun je ook de complete class naam opgeven:
Code (php)
1
2
3
2
3
<?php
$form = new \application\modules\overzichten\controllers\Overzichten_Form_Rapportage();
?>
$form = new \application\modules\overzichten\controllers\Overzichten_Form_Rapportage();
?>
Gewijzigd op 06/09/2014 16:21:58 door Frank Nietbelangrijk
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.
Dank je Wouter, ik heb het aangepast.
Dankjewel Frank voor de tip maar helaas, beide opties geven nog steeds dezelfde foutmelding.
Moet je daar niet het volledige path invullen?
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
Gewijzigd op 08/09/2014 15:55:43 door Gert Assen
Post hier eens even die class.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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();
}
}
[/code]
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();
}
}
[/code]
Gewijzigd op 08/09/2014 15:57:10 door Gert Assen
Ik bedoelde de class waarin je de class aanroept die niet werkt.
Die staat als eerste in mijn oorspronkelijke post.
Let je wel goed op hoofd en kleine letters in je bestandsnamen? (in Windows maakt dat geen verschil maar in Linux wel)
@Frank... daarom was ik dus benieuwd hoe die class eruit ziet.
Het is inderdaad een Linux server, en hoofd en kleine letters staan allemaal goed. De applicatie is ontwikkeld op een windowsserver en geimplementeerd op een linux server, dus daar hebben we tijdens het testen en implementeren heel veel problemen mee gehad. Daarom let ik nu extra goed op hoofd/kleine letters.
Wat je wel zou kunnen doen...
Ga naar de autoloader class/code die de class zou moeten inladen. Als het goed is wordt daar een file opgebouwd die wordt geinclude of gerequired. Zoiets als:
Hiertussen zou je dan zoiets kunnen plaatsen:
Code (php)
Als het goed is, krijg je dan te zien welk bestand er niet kan worden geladen, en aan de hand van het path/bestandsnaam kun je zien wat er misgaat.
Laat maar even weten of het gelukt is.
Gewijzigd op 09/09/2014 14:04:56 door Ozzie PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
class Overzichten_OverzichtenController extends Wis_Controller_Abstract
{
public function init()
{
}
public function indexAction()
{
$form = new Overzichten_Form_Rapportage();
$this->view->form = $form;
if ($this->getRequest()->isPost())
{
$form->setDefaults($this->getRequest()->getParams());
if ($form->exposurehours->getValue('genereren'))
{
if ($this->isPostAndValid($form->exposurehours)) $this->_forward('exposurehours');
}
else if ($form->monthlyjobhours->getValue('genereren'))
{
if ($this->isPostAndValid($form->monthlyjobhours)) $this->_forward('monthlyjobhours');
}
}
}
[/code]
is de aanroep voor deze :
[code]
[code]<?php
class Overzichten_Form_Rapportage extends Wis_Form_Abstract
{
public function init()
{
$this->setSubForms(array(
'exposurehours' => new Overzichten_Form_Overzichten_Exposurehours(array('legend' => 'Exposure hours', 'class' => 'full')),
'totalmonthlyjobhours' => new Overzichten_Form_Overzichten_Totalmonthlyjobhours(array('legend' => 'Total monthly job hours', 'class' => 'full'))
));
parent::init();
}
}
[/code]
Ik waardeer het zeer dat jullie meedenken.
class Overzichten_OverzichtenController extends Wis_Controller_Abstract
{
public function init()
{
}
public function indexAction()
{
$form = new Overzichten_Form_Rapportage();
$this->view->form = $form;
if ($this->getRequest()->isPost())
{
$form->setDefaults($this->getRequest()->getParams());
if ($form->exposurehours->getValue('genereren'))
{
if ($this->isPostAndValid($form->exposurehours)) $this->_forward('exposurehours');
}
else if ($form->monthlyjobhours->getValue('genereren'))
{
if ($this->isPostAndValid($form->monthlyjobhours)) $this->_forward('monthlyjobhours');
}
}
}
[/code]
is de aanroep voor deze :
[code]
[code]<?php
class Overzichten_Form_Rapportage extends Wis_Form_Abstract
{
public function init()
{
$this->setSubForms(array(
'exposurehours' => new Overzichten_Form_Overzichten_Exposurehours(array('legend' => 'Exposure hours', 'class' => 'full')),
'totalmonthlyjobhours' => new Overzichten_Form_Overzichten_Totalmonthlyjobhours(array('legend' => 'Total monthly job hours', 'class' => 'full'))
));
parent::init();
}
}
[/code]
Ik waardeer het zeer dat jullie meedenken.
Gewijzigd op 09/09/2014 17:09:01 door Gert Assen
Heb je geprobeerd wat ik in mijn voorgaande opmerking schreef? Dat is de snelste manier om erachter te komen wat er fout gaat.
Ik heb de plek nog niet kunnen vinden die je bedoeld, ga er straks weer mee aan de slag. Heb naast het programmeren nog andere taken en ben er nog niet echt aan toe gekomen.