Ik probeer een route aan te maken, maar zodra deze route gevolgd wordt, komt er een witte pagina in beeld.

Het probleem blijkt te zijn dat er gewoon geen output komt en alleen in het geval van een Route. Hier de routes die ik aan de router mee geef:

<?php

$router = $frontController->getRouter();
    $router->addRoute('recept', new Zend_Controller_Router_Route('recept/:recept', array(
        'module' => 'default', 
        'controller' => 'recept', 
        'action' => 'view', 
        'recept' => null)
    ));
    $router->addRoute('login', new Zend_Controller_Router_Route_Static(
        'login',
        array(
            'controller' => 'admin', 
            'action' => 'login'
        )
    ));


Het probleem doet zich alleen voor bij de Route, de Route_Static werkt wel gewoon.

Via de volgende debug regels:

<?php
$frontController->dispatch($request);
Zend_Debug::dump($router->getCurrentRouteName());
Zend_Debug::dump($request);


Ben ik er achtergekomen dat de juiste route wel gevolgd wordt.
Ook ben ik er achter dat de juiste controller en action wel wordt aangesproken en uitgevoerd alleen wordt de output niet weergegeven maar opgeslagen in een private variabele van het $request object.
$request is een instantie van Zend_Controller_Request_Http

Is iemand van jullie dit probleem wel eens tegen gekomen of weet iemand waar ik een oplossing kan vinden/zoeken?

ZF version = 1.5.2
Zoek een method waarmee je het eruit kan ophalen?
Daar zijn er in Zend waarschijnlijk meerdere van...
Uiteindelijk is het gelukt met:

<?php
'recept' => ''

in plaats van

<?php
'recept' => null


Toch bedankt Lode!
Nog een vraagje wat hier mee te maken heeft:

Klopt het dat het eerste gedeelte van je route (in het voorbeeld van mijn eerste post: recept) niet overeen mag komen met de naam van een controller?
Volgens mij moet je het ook zo zien dat hij een nieuwe controller aanmaakt. Overschrijven zal daarbij blijkbaar niet toegestaan zijn. (Ik ben niet zo heel bekend met het Zend Framework)
Ik heb zelf ook geen ervaring met ZF, maar volgens mij is de naam van de controller niet direct verbonden met de URL, en kan je dus veilig beiden hetzelfde hebben. Het eerste argument van addRoute is een soort 'id', dat kan je later weer gebruiken om URLs te genereren: http://framework.zend.com/manual/en/zend.controller.router.html (2e note)
Jelmer, dat klopt, maar dat is voor het opbouwen van de url.

Voor het matchen kan alleen de url gebruikt worden heb je dus een route:
recept/:recept
Zal de url site.com/recept/zoek gematched worden. Terwijl deze eigenlijk naar de zoekAction van ReceptController zou moeten gaan.

Eingelijk zou dus eerste de default route geprobeerd moeten worden, ik heb alleen geen idee hoe en een vermoeden dat het niet gaat werken gezien de __call methode.
Dus recept/zoek moet naar zoekActie() en recept/pindakaas moet naar view()
Handleiding:
Routes are matched in reverse order so make sure your most generic routes are defined first.

Mij lijkt dat je eerst de variabele route toevoegt aan de router, en dan een 2e static route:
<?php
$router->addRoute('zoek_recept', new Zend_Controller_Router_Route_Static(
'recept/zoek',
array('controller' => 'Recept', 'action' => 'zoek')
));
?>
Daar was ik dus niet op gekomen, vandaar mijn vraag hier :)

Bedankt, ik denk dat ik er wel wat mee kan!

Reageren