[ZF] Modules (Opgelost)
shibble - 13/09/2008 01:25 (laatste wijziging 13/09/2008 10:00)
MySQL interesse
Hallo,
ik stuit tegen het volgende probleem,
ik heb in de map applications een map modules daarin staan mijn modules (bv. default & nieuws).
in me bootstrap heb ikhet volgende staan:
$controller = Zend_Controller_Front::getInstance();
$controller->addModuleDirectory('./application/modules/');
$router = $controller->getRouter();
$router->addRoute('nieuws', Zend_Controller_Router_Route('nieuws/:newsid', array('controller' => 'index', 'action' => 'read')));
$controller = Zend_Controller_Front:: getInstance ( ) ;
$controller -> addModuleDirectory ( './application/modules/' ) ;
$router = $controller -> getRouter ( ) ;
$router -> addRoute ( 'nieuws' , Zend_Controller_Router_Route
( 'nieuws/:newsid' , array ( 'controller' => 'index' , 'action' => 'read' ) ) ) ;
in de modules mappen gebruik ik de standaard mvc structuur als die van ZF.
IndexController.php in de controllers map van de nieuws module:
http://shibble.pastebin.com/m76b3ca8e
als ik dan naar:
http://www.webcustoms.nl/zend_wcustoms/nieuws/1 /
ga dan krijg ik de volgende error:
[error=php]
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /home/id1269/domains/webcustoms.nl/public_html/zend_wcustoms/library/Zend/Controller/Dispatcher/Standard.php:249 Stack trace: #0 /home/id1269/domains/webcustoms.nl/public_html/zend_wcustoms/library/Zend/Controller/Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /home/id1269/domains/webcustoms.nl/public_html/zend_wcustoms/index.php(83): Zend_Controller_Front->dispatch() #2 {main} thrown in /home/id1269/domains/webcustoms.nl/public_html/zend_wcustoms/library/Zend/Controller/Dispatcher/Standard.php on line 249
[/error]
terwijl hij lijn 15 van de indexcontroller zou moeten echooén
6 antwoorden
Gesponsorde links
shibble - 13/09/2008 16:25
MySQL interesse
ik maak nu gebruik van de errorhandler en krijg de volgende error in me content te zien:
Invalid controller specified (1)
Maargoed wat doe ik nu fout dan?
- application
- modules
- default
- controllers
+ IndexController.php
+ ErrorController.php
- models
+ nieuws.php
- views
- filters
- helpers
- scripts
- index
+ index.phtml
- error
+ error.html
- nieuws
- controllers
+ IndexController.php
- models
+ nieuws.php
- views
- filters
- helpers
- scripts
- index
+ index.phtml
- application
- modules
- default
- controllers
+ IndexController. php
+ ErrorController. php
- models
+ nieuws. php
- views
- filters
- helpers
- scripts
- index
+ index. phtml
- error
+ error. html
- nieuws
- controllers
+ IndexController. php
- models
+ nieuws. php
- views
- filters
- helpers
- scripts
- index
+ index. phtml
Stijn - 13/09/2008 18:33
PHP expert
array('controller' => 'index', 'action' => 'read')
array ( 'controller' => 'index' , 'action' => 'read' )
Je moet nog een waarde meegeven, namelijk de module.
array('controller' => 'index', 'action' => 'read' , 'module' => 'nieuws')
array ( 'controller' => 'index' , 'action' => 'read' , 'module' => 'nieuws' )
shibble - 13/09/2008 18:56
MySQL interesse
Hmmm, de add route is nu:
$router->addRoute('nieuws',
new Zend_Controller_Router_Route('nieuws/:newsid',
array('controller' => 'index',
'action' => 'view',
'module' => 'nieuws'
)));
$router -> addRoute ( 'nieuws' ,
new Zend_Controller_Router_Route( 'nieuws/:newsid' ,
array ( 'controller' => 'index' , 'action' => 'view' ,
'module' => 'nieuws'
) ) ) ;
maar blijf de zelfde error krijgen...
Stijn - 13/09/2008 21:10
PHP expert
Zet eens rond je $front->dispatch een try catch, je zal de fout wel vanzelf zien.
....
try {
$front->dispatch();
} catch( Exception $e ) {
echo $e->getMessage();
}
....
try {
$front -> dispatch ( ) ;
} catch( Exception $e ) {
}
shibble - 14/09/2008 00:57 (laatste wijziging 14/09/2008 23:33)
MySQL interesse
Invalid controller specified (1)
krijg dus nog steeds dezelfde fout wat doe ik fout =(!
UPDATE :
me routing ziet er nu alsvolgt uit:
$router = $controller->getRouter();
$router->addRoute('nieuws',
new Zend_Controller_Router_Route('nieuws',
array('controller' => 'index',
'action' => 'index',
'module' => 'nieuws'
)))
->addRoute('nieuws',
new Zend_Controller_Router_Route('nieuws/:nieuwsid',
array('controller' => 'index',
'action' => 'view',
'module' => 'nieuws'
)))
->addRoute('nieuws',
new Zend_Controller_Router_Route('nieuws/archief',
array('controller' => 'index',
'action' => 'archief',
'module' => 'nieuws'
)));
$router = $controller -> getRouter ( ) ;
$router -> addRoute ( 'nieuws' ,
new Zend_Controller_Router_Route( 'nieuws' ,
array ( 'controller' => 'index' , 'action' => 'index' ,
'module' => 'nieuws'
) ) )
-> addRoute ( 'nieuws' ,
new Zend_Controller_Router_Route( 'nieuws/:nieuwsid' ,
array ( 'controller' => 'index' , 'action' => 'view' ,
'module' => 'nieuws'
) ) )
-> addRoute ( 'nieuws' ,
new Zend_Controller_Router_Route( 'nieuws/archief' ,
array ( 'controller' => 'index' , 'action' => 'archief' ,
'module' => 'nieuws'
) ) ) ;
waar ik achter ben gekomen is, als ik naar "/nieuws/nieuws/archief/" ga dan word de archiefaction van de indexcontroller van de nieuws module gebruikt, maar ga ik bijvoorbeeld naar "/nieuws/nieuws/2/" dan word de viewaction niet geladen... maar krijg ik de error: "Invalid controller specified (2)" ga ik naar "/nieuws/nieuws/" dan word de indexaction geladen wat doe ik fout?
en hoe kan ik ervoor zorgen inplaats "/nieuws/nieuws/" dat het "/nieuws/" word? heb al op google gezocht en veel dingen uitgeprobeerd maar krijg het niet goed
nu ben ik er net achtergekomen ga ik naar "/nieuws/nieuws/index/view/nieuwsid/2/" dan pas word de viewAction geladen.
Update #2:
Probleem is opgelost door de addRoute('nieuws', ....) te verandere per route de eerste gewoon nieuws de 2e nieuws_view en de 3e nieuws_archief daardoor heb ikhet werkend gekregen!
bedankt iedereen voor de hulp
Gesponsorde links
Dit onderwerp is gesloten .