Zend Framework Route pakt module niet

Pagina: 1
Acties:
  • 638 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Ik ben bezig om een webapplicatie te ontwikkelen met behulp van het Zend Framework en nu wil ik met behulp van een module het beheer gedeelte afvangen.

Het gedeelte dat door de module afgevangen moet worden is:
http://domeinnaam.nl/beheer/controller/action

Maar als ik nu de url "http://domeinnaam.nl/beheer/orders" aanroep krijg ik als foutmelding "Invalid controller specified (beheer)". Dat lijkt mij niet te kloppen aangezien die url naar de orders controller moet gaan in de beheer module directory.

In de documentatie van het Zend Framework staat dat de Zend_Controller_Router_Rewrite voorgeconfigureerd is met een default route, maar als ik van het Zend_Controller_Router_Rewrite object de getRoutes() functie aanroep krijg ik een lege array terug en dus geen default route of mijn beheer route. Naar mijn weten heb ik het juist ingesteld en zou het voorbeeld van 7.5.4. Default routes gewoon moeten werken.

Mijn index.php ziet er als volgt uit. De BASE_PATH komt uit de config.inc.php.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
require_once '../application/config.inc.php';
require_once 'Zend/Controller/Front.php';

$objControllerFront = Zend_Controller_Front::getInstance();

$objControllerFront->setControllerDirectory(
    array(
        'default' => BASE_PATH .'/application/controllers',
        'beheer'  => BASE_PATH .'/modules/beheer/controllers'
    )
);

$objControllerFront->run(BASE_PATH .'/application/controllers');


Weet iemand hier misschien een oplossing voor?

// Edit
Ook na het veranderen van de directory structuur en de index.php wil het nog steeds niet werken. ik gebruik nu de volgende index.php.

PHP:
1
2
3
4
5
6
7
8
<?php
require_once '../application/config.inc.php';
require_once 'Zend/Controller/Front.php';

$objControllerFront = Zend_Controller_Front::getInstance();
$objControllerFront->addModuleDirectory(BASE_PATH .'/application/modules');

Zend_Controller_Front::run(BASE_PATH .'/application/modules/default/controllers');


En de directory structuur:
application/modules/<module>/controllers
application/modules/<module>/models
application/modules/<module>/views

[ Voor 16% gewijzigd door RAJH op 11-01-2008 09:46 ]


Acties:
  • 0 Henk 'm!

  • Piro
  • Registratie: Oktober 2001
  • Laatst online: 05:29

Piro

Destructief

Als je Zend_Controller_Front::run() gebruikt dan worden volgens mij je eigen instellingen niet gebruikt omdat deze door het framework overruled worden. Dit is een shortcut voor 3 regels code.

Wil je jouw stukje werkend hebben met ->setControllerDirectory() of ->addModuleDirectory() gebruik dan $objControllerFront->dispatch();

Dit zou het volgende stukje code moeten betekenen :)


PHP:
1
2
3
4
<?php
$objControllerFront = Zend_Controller_Front::getInstance();
$objControllerFront->addModuleDirectory(BASE_PATH .'/application/modules');
$objControllerFront->dispatch();

[ Voor 3% gewijzigd door Piro op 11-01-2008 10:47 ]


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Dat is inderdaad de oplossing. Heel erg bedankt _o_