login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > PHP


Gegevens:
Geschreven door:
Stijn
Moeilijkheidsgraad:
Moeilijk
Hits:
12936
Punten:
Aantal punten:
 (4.88)
Aantal stemmen:
8
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (5)
 



Tutorial:

Websites maken met Zend Framework: deel 2/5

Websites maken met Zend Framework: deel 2
Menu: 1. Inleiding
2. De eerste controller maken
3. De controllers en actions bedenken
4. De IndexController afwerken
5. De GalleryController
6. Einde deel 2

1. Inleiding


Deel 2 gaat verder waar deel 1 gestopt was. Het laatste wat we er gebeurt was is het configureren van de controllers en dus gaat deel 2 over Controllers. Meer info over controllers vind je in de tutorial over het MVC model.

Controllers zorgen ervoor dat de input van de gebruiker (url, formulier data, ...) correct verwerkt wordt (mbv Models) en dat er een correcte output op het scherm van de gebruiker komt te staan (mbv Views).

De URL's gaan er altijd als volgt uitzien: http://www.mijnsite.com / controller / action /

2. De eerste controller maken


De eerste controller die we maken is de IndexController. Deze moet als eerste gemaakt worden omdat wanneer de andere controller niet gevonden kan worden deze kan worden aangeroepen. Ingewikkeld? Een voorbeeldje:

Stel dat een bezoeker volgende URL intikt: http://www.mijnsite.com/hack/hack , deze controller bestaat niet en dus zal de controller automatisch de default controller tonen en dat is http://www.mijnsite.com/index/index.

Hetzelfde geldt ook voor de action. Stel dat de action niet gevonden wordt maar wel de controller. Dan wordt de indexAction aangeroepen van de controller.

Oké we gaan nu onze IndexController maken. We nemen een leeg PHP bestand en we nemen volgende code over:

IndexController.php:
<?php
class IndexController extends Zend_Controller_Action 
{
    
    public function 
indexAction()
    {
        
        echo 
"Dit is de indexAction.";
        
    }
    


De naam van de controller is index en dus moet je bestand altijd zo heten: IndexController.php. Dus als je de controller gallery wilt heet je bestand GalleryController.php. Deze php bestanden zet je altijd in de map ./application/controllers/, want dat is de locatie die we in de bootstrap geconfigureerd hebben.

De code uitleg:
- class IndexController extends Zend_Controller_Action: wat? denk je. Iedere controller is een class. Deze class krijgt dezelfde naam als de naam van je php bestand (nl. IndexController). Iedere controller class moet de class Zend_Controller_Action extenden omdat in de controller class de actions worden gemaakt (en andere controller functies).
- public function indexAction(): iedere action is een public function. Deze draagt altijd de naam indexAction. Dus wanneer je naar http://www.mijnsite.com/index/bewerken gaat dan wordt de action bewerkenAction() aangeroepen in de IndexController.

Note: ?> moet niet op het einde van het php bestand. Sommigen weten dat niet maar je moet enkel ?> zetten in bestanden waar er naast php code ook HTML code staat. De ?> mag niet geschreven worden in php bestanden volgens de Zend Coding Standard. Als je geen ?> schrijft voorkom je extra spaties in je output. (verbetering door kokx)

Wanneer je nu gaat naar http://www.mijnsite.com/ zal de default Controller en Action aangeroepen worden, maar je ziet opnieuw die error. Je doet niets verkeerd maar dit komt omdat we onze View gedeelte nog niet gemaakt hebben. Om dit op te lossen moeten we volgende code toevoegen aan onze configuratie van de front controller in de index.php (bootstrap bestand).

$controller->setParam('noViewRenderer' true); 

Deze regel code zet je voor $controller->dispatch() anders krijg je een foutmelding.

Hiermee zeg je aan de controller dat er geen gebruik wordt gemaakt van de View. Wanneer je refresht zie je mooi de tekst van de indexAction op je scherm.

3. De controllers en actions bedenken


Het is belangrijk om te weten welke pagina's je gaat maken en welke actions. Dit is de lijst met de controllers en actions die wij nu gaan maken.

  • IndexController
    • indexAction (de startpagina van onze portfolio)
    • infoAction (hier komt wat informatie te staan)
    • contactAction (een contact pagina)
  • GalleryController
    • indexAction (de startpagina van de gallery, hier wordt de volledige gallery getoont)
    • viewAction (een item in detail bekijken)
    • addAction (een item toevoegen aan de gallery)
    • editAction (een item bewerken in de gallery)
    • deleteAction (een item verwijderen van de gallery)

Dat zijn niet zoveel controllers/actions maar bij een grote website kan dit al snel uitbreiden. In puntje 4 gaan we de eerste Controller verder afwerken.

4. De IndexController afwerken


Als je de IndexController.php gesloten hebt moet je die opnieuw openen. We hebben al reeds de controller class gemaakt en de eerste indexAction. Nu moet je nog infoAction en contactAction toevoegen. Je kan terug volgende code overnemen of zelf eens proberen en daarna vergelijken.

IndexController.php:
<?php
class IndexController extends Zend_Controller_Action 
{
    
    public function 
indexAction()
    {
        
        echo 
"Dit is de indexAction.";
        
    }
    
    public function 
infoAction()
    {
        
        echo 
"Dit is de infoAction.";
        
    }
    
    public function 
contactAction()
    {
        
        echo 
"Dit is de contactAction.";
        
    }
    


Wanneer je nu naar http://www.mijnsite.com/index/info/ gaat dan zie je op je scherm: Dit is de infoAction. Hetzelfde gebeurt wanneer je de action verandert naar contact in de URL. Krijg je dit niet, kijk dan eens na of je geen fout hebt getypt, de juiste class hebt gemaakt, ...

5. De GalleryController


Nu mag je het zelf eens proberen. Volgende puntjes om je wat te helpen:

  • Plaats het php bestand in de map ./application/controllers/
  • De controller class extends de Zend_Controller_Action class.
  • Voor de actions zie punt 3 van deze tutorial.

En nu is het aan jou. Wil je weten of je code correct is? Klik dan op de volgende link, http://www.plaatscode.be/11899/.

Als alles goed is zal http://www.mijnsite.com/gallery/view/ een mooie tekst op het scherm toveren.

6. Einde deel 2


De controllers en actions zijn gemaakt, de bootstrap heeft iets extra's gekregen en jij hebt nu al wat meer kennis over de C van het MVC model en het Zend Framework. Wat rest er ons nog? Een mooie layout en de inhoud. In deel 3 gaan we aan de slag met de V van het MVC model.

Je kan de controllers en actions live testen op http://www.mindios.com/portfolio/

Klik hier voor de volledige versie van dit tutorial pakket!

Vragen of opmerkingen -> stuur mij een PM of plaats een reactie.

Stijn Leenknegt

« Vorige tutorial : Websites maken met Zend Framework: deel 1/5 Volgende tutorial : Websites maken met Zend Framework: deel 3/5 »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.015s