login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF]controller probleempje (Opgelost)

Offline cloudstrife - 10/12/2007 21:34
Avatar van cloudstrifePHP beginner Ik heb volgende controller als defaultcontroller:
  1. <?php
  2.  
  3. class ArtikelController extends Zend_Controller_Action
  4. {
  5. function indexAction()
  6. {
  7.  
  8. echo $this->_request->getParam('id');
  9. }
  10. function artikelAction()
  11. {
  12. echo "artikel";
  13. }
  14. }
  15. ?>

De bedoeling is dat wanneer men de url van mijn site indrukt je de index pagina te zien krijgt. Deze index pagina bevat gewoon een tekst die uit een tabel artikelen komt, net als de andere inhoud van de site.

Momenteel moet ik dit op de volgende manier oproepen:
http://localhost/test/website/artikel/index/id/5

Maar ik wil nu hebben dat ik dit kan doen met
http://localhost/test/website/artikel/5
of in het slechtste geval
http://localhost/test/website/artikel/id/5
Dus zonder dat ik een action meegeef in feite en standaard de indexAction gebruik omdat er toch niets meer gebeurt dan het artikel ophalen en weergeven.

Iemand enig idee hoe dit moet?

2 antwoorden

Gesponsorde links
Offline Stijn - 11/12/2007 00:38
Avatar van Stijn PHP expert Na wat hevig zoekwerk, ben ik eruit geraakt. Je kan de URL's aanpassen in de Zend_Controller_Router_Rewrite class. Dus jij wilt dat ipv /artikel/index/id/5 -> /artikel/id/5 wordt.

De volgende code moet in je bootstrap staan (index.php):

  1. Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
  2. Zend_Loader::loadClass('Zend_Controller_Router_Route');
  3.  
  4. //configure the router class
  5. $route = new Zend_Controller_Router_Rewrite();
  6. $route->addRoute( 'artikel' , new Zend_Controller_Router_Route('artikel/id/:id' , array( 'controller' => 'artikel' , 'action' => 'index') ) );
  7.  
  8. //set up the controller
  9. $controller = $route->getFrontController();
  10.  
  11. //de router instellen
  12. $controller->setRouter($route);
  13.  
  14. //de front controller configureren
  15. $controller->setParam('noViewRenderer' , true);
  16. $controller->setControllerDirectory( './application/controllers');
  17.  
  18. //run the conroller
  19. $controller->dispatch();


Je kan dus met $route->add(...); nog meer custom routes toevoegen.

Informatie hierover vind je o.a. op de twee onderstaande links.

http://framewor...outer.html
http://jeffreys...-framework/
Offline cloudstrife - 11/12/2007 10:51
Avatar van cloudstrife PHP beginner Bedankt voor de info, was er zelf niet uitgekomen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s