login  Naam:   Wachtwoord: 
Registreer je!
 Forum

oop - smarty - post (Opgelost)

Offline Erwt - 31/10/2009 16:47
Avatar van ErwtPHP beginner Hej allemaal,

Ben wat aant klooien met Smarty en probeer beetje met OOP te werken maar ik vroeg me nu af.. wat is de juiste manier om dan POST's te behandelen? ik heb een inlog-formulier maar vroeg me af waar ik het beste de POST's op kan vangen, in mijn controller of in de template zelf?

Omdat ik er nog niet veel van snap zijn voorbeelden welkom 

9 antwoorden

Gesponsorde links
Offline Martijn2008 - 31/10/2009 17:18 (laatste wijziging 31/10/2009 17:22)
Avatar van Martijn2008 PHP beginner MVC, oftewel Model View Controller. In de controller verwerk je de data, die je uiteindelijk in de view weergeeft. Dus de controlles, die je uit wil voeren op de post-data doe je in de controller. Hieronder een kort voorbeeldje(vergeet niet de Smarty Class te include):

  1. <?php
  2.  
  3. /*
  4.  * Some controller
  5.  */
  6.  
  7. // Beschouw deze data als afkomstig van de post.
  8. $strPostData = "Michelle";
  9.  
  10. $smarty = new Smarty();
  11. $smarty->compile_check = true;
  12. $smarty->debugging = true;
  13.  
  14. // Controle op post data
  15. if($strPostData == "Michelle")
  16. {
  17. $smarty->assign("postData", "Postdata is gelijk aan " . $strPostData . "");
  18. }
  19. else
  20. {
  21. $smarty->assign("postData", "Postdata is niet gelijk aan " . $strPostData . "");
  22. }
  23.  
  24. $smarty->display("index.tpl");
  25.  
  26. ?>


Tot slot de template. Zoals je kunt zien wordt deze alleen gebruikt om de bewerkte data op het scherm te weergeven.

  1. <!-- File: index.tpl //-->
  2.  
  3. {$postData}


Offline Erwt - 31/10/2009 17:37 (laatste wijziging 01/11/2009 18:05)
Avatar van Erwt PHP beginner Precies, MVC.. daar ben ik geïnteresseerd in.

Maar als ik jouw verhaaltje begrijp klopt het dan dat ik in mijn form de action naar mijn controller (index) moet zetten?

En dan in de controller dat ergens opvangen? en waar precies? In mijn controller heb ik een switch en bij case "inloggen" moet ik daar dan bv de if POST opvangen?

Zou je anders een keer naar mijn voorbeeld willen kijken of die wel redelijk goed is?

Bedankt!
Offline NTS64 - 01/11/2009 18:17
Avatar van NTS64 PHP gevorderde Wat bedoel je met 'in de template zelf'? Dat je dan je code tussen de Smarty tags {php}{/php} zet, of ...?
En als je inderdaad met het MVC pattern werkt, dan zou je toch moeten weten dat het valideren van input in de controller moet worden afgehandeld en niet in de view? Ik vind dit maar een raar topic. Hanteert je applicatie wel degelijk de MVC structuur? Of scheid je je code gewoon van je presentatie dmv Smarty?
Offline Erwt - 01/11/2009 20:34
Avatar van Erwt PHP beginner Dat is het dus juist Woedi, ik probeer het op de juiste manier te doen. Ik heb nu de form action leeg gelaten (zelfde pagina dus) en in de controller heb ik dan een switch waar hij alle pagina's bij langs gaat. Daar heb ik nu dus ook een if(isset($_POST..

Ben benieuwd naar voorbeelden die met Smarty werken en OOP is.
Offline NTS64 - 01/11/2009 22:33
Avatar van NTS64 PHP gevorderde Bedoel je met die switch zoiets dat een pagina include mbv een GET variabele uit URL? Ik wil je niet ontmoedigen, maar het MVC pattern zit iets ingewikkelder in mekaar. Ik zeg niet dat wat jij nu doet verkeerd is, maar het is imo enkel MVC omdat je de term controller in de mond neemt, en omdat je dat switch statement als router zou kunnen bekijken. Ik raad je aan om deze tutorial van Marten eens te bekijken: http://www.site..._uitgelegd. Ik snap ook niet zo goed wat je bedoelt met het Object Oriented afhandelen van je POST data. Bedoel je dat je je POST formulieren afhandelt door een class die je formulier valideert(controleert op lege velden, ongeldige invoer, etc...)?
Offline Erwt - 01/11/2009 23:06
Avatar van Erwt PHP beginner Ik bedoel eigenlijk gewoon waar ik moet checken of er een POST binnenkomt..

Je hebt mij ook niet horen zeggen dat mijn MVC pattern goed is, het is alles behalve MVC op dit moment.. maar ik probeer het nu juist te maken en omdat iedereen een andere manier van programmeren e.d. heeft is het lastig om het zomaar even toe te passen.
Offline NTS64 - 02/11/2009 11:55
Avatar van NTS64 PHP gevorderde Ja, daar heb je wel gelijk in, iedereen hanteert zo zijn eigen stijl. Je kan dus kiezen of je het in je template zelf doet tussen {php} tags in Smarty, of in je php bestand. Ik zou persoonlijk voor het laatste kiezen, aangezien een templateEngine de logica van de presentatie moet scheiden...
Offline ArieMedia - 02/11/2009 12:20
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Ik gebruik zelf ook Smarty,

Ik houd PHP en opmaak gescheiden. ik plaats dus ook geen PHP-code in mijn templates.

functies die ik wel gebruik zijn bijvoorbeeld de if functie van smarty, wat af en toe erg handig kan zijn.

(Zo heb ik voor mijn beheer maar 1 template document nodig die op alle gebruikers werkt)
Offline Erwt - 02/11/2009 15:26
Avatar van Erwt PHP beginner Ten eerste bedankt voor jullie raadzame hulp, ik gebruik ook een if'je in Smarty om te kijken of iemand is ingelogd of niet zodat ik bepaalde informatie kan tonen.

Aangezien in MVC nog niet zo heel erg vat liep het dus mis met die POST op te vangen. Ik weet dat mijn idee wel goed zit maar de realisatie is eigenlijk bagger. Ik zal dit eerst proberen op te lossen en daarna zie ik wel verder.

Heel erg bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s