MVC van View naar Controller

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karin Heinen

Karin Heinen

16/04/2012 09:40:00
Quote Anchor link
Hoi allemaal,

ik ben bezig met een project en ik kom er niet meer uit.
ik wil graag een filter maken voor een lijst uit de db. en dit zo simpel mogelijk houden er zijn 3 categorieën waarop je kunt filteren.
ik heb het zo ver dat de controller de queries set en de model die gegevens ophaalt en dan in de view laat zien. mijn vraag is:
hoe kan ik de querie wijzigen als er op een filter geklikt wordt. dus eigenlijk hoe ga ik van de view terug naar de controller om daar de querie aan te passen.
Ik hoop dat jullie mij hiermee kunnen helpen.

groetjes karin
 
PHP hulp

PHP hulp

07/05/2024 01:12:27
 
Erwin H

Erwin H

16/04/2012 09:45:28
Quote Anchor link
Ik zou zeggen, dat doe je niet. Als er een filter wordt gewijzigd dan betekent dat dat de user iets heeft gedaan en dat je dus een nieuwe aanvraag krijgt voor output. Oftewel, je hele schema begint weer van voren af aan. De aanvraag gaat naar de controller, die vraagt het model om data op te leveren en de view maakt de GUI op. De view zal nooit iets vragen aan het model.
 
Karin Heinen

Karin Heinen

16/04/2012 10:54:07
Quote Anchor link
dus als ik het goed begrijp dan moet er in de controller een soort if statement komen die om de juiste query van de model vraagt?
maar hoe weet de controller op welke filter er is geklikt?
heeft php ook iets van een observer/observable patroon?

alvast bedankt.
 
Erwin H

Erwin H

16/04/2012 11:08:17
Quote Anchor link
In php werkt het iets anders dan bijvoorbeeld Java, C, Delphi, of welke taal je ook maar wilt, omdat het stateless is. Php heeft geen weet van wat er al gebeurd is en onthoudt ook niets voor een volgende state wijziging.
Daarmee is het ook niet van belang op welk filter is geklikt, alles wat je wilt weten is wat de staat van alle elementen was op het moment dat de aanroep naar de controller werd gedaan. Ofwel, makkelijker gezegd, de controller moet bij elke aanroep alle input kanalen uitlezen (GET, POST, COOKIE, SERVER, SESSION) en op basis van de totale set aan gegevens bepalen wat er moet gebeuren. Dus ja, in de controller heb je if statements nodig (of switch oid) om te bepalen welke query er gedraaid moet worden.

Voorbeeldje:
Je hebt drie filters:
filter1, mogelijke staat aan of uit
filter2, mogelijke staat aan of uit
filter3, mogelijke staat aan of uit

Bij de start van de pagina staan ze allemaal uit, dus de waardes in GET zijn [false, false, false].
Nu klikt de gebruiker op de eerste en zet die aan: [true, false, false].
Hij krijgt een nieuwe pagina te zien. Dan klikt hij de tweede aan: [true, true, false].
Hij krijgt weer een andere pagina te zien. Nu klikt hij 1 en 2 weer uit: [false, false, false].
Dit is dezelfde staat als het begin, maar je komt vanaf een andere staat dan toen. De controller weet dit echter niet, die weet niet wat er al gedaan is, die laat gewoon weer de pagina zien doe hoort bij [false, false, false].

Daarvoor, ja je kan uiteraard een observer pattern implementeren, maar dat heeft geen nut voor dit soort wijzigingen.
Gewijzigd op 16/04/2012 11:09:17 door Erwin H
 
Karin Heinen

Karin Heinen

16/04/2012 11:19:36
Quote Anchor link
ontzettend bedankt Erwin.
volgens mij kan ik nu een stuk verder :D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.