login  Naam:   Wachtwoord: 
Registreer je!
 Forum

smarty

Offline Warbringer - 25/10/2007 14:15 (laatste wijziging 25/10/2007 14:16)
Avatar van WarbringerOnbekend Ik wil een contact form maken.
In de class heb ik een assign gemaakt en als ik die
in mijn template zet weergeeft hij ook netjes mijn
contact formulier. Maar het probleem nu. Zoals jullie weten
om het te submitten heb je nodig 2 stukken code:

  1. <?php
  2. if(!$_POST['Submit'])
  3. {
  4. ?>


en dan voor afhandeling

  1. <?php
  2. }
  3. else
  4. {
  5. mail(""); // blablabla
  6. }
  7. ?>


maar als ik dit in mijn template zet dan krijg ik:

Fatal error: Smarty error: [in contact.php line 6]: syntax error: unrecognized tag: ?>

Iemand die mij kan vertellen wat er fout gaat svp?


----- EDIT : MIJN CODE VAN DE TEMPLATE -----

  1. <?php
  2.  
  3. if(!$_POST['Submit'])
  4. {
  5. ?>
  6. <html>
  7. <head>
  8. <title>{$TitleName} - contact</title>
  9. <meta name="description" content="{$meta_description}">
  10. <meta name="keywords" content="{$meta_keywords}">
  11. <meta name="author" content="{$meta_author}">
  12. </head>
  13. <body>
  14. <!--
  15. {include file="header.php"}
  16. {include file="footer.php"}
  17. -->
  18. {$contact_form}
  19. </body>
  20. </html>
  21. <?php
  22. }
  23. else
  24. {
  25. echo "klaar";
  26. }
  27. ?>

6 antwoorden

Gesponsorde links
Offline ranco - 25/10/2007 14:58 (laatste wijziging 25/10/2007 15:05)
Avatar van ranco PHP gevorderde Wat er fout gaat?
Ik denk dat smarty niet zo blij is dat je php en html door elkaar gebruikt.
Smarty is een template programma. Dit houdt in dat php en html totaal gescheiden zijn. Dus staan in twee aparte files. Ik vermoed dan ook in dit geval dat smarty het niet pikt dat je je php gedeelte sluit voor dat je template geparsd is.

Waarschijnlijk heb je het idee achter smarty niet helemaal begrijpt  

Edit: http://www.site...ne:_Smarty
Hier staat het idee in uitgelegd
Offline cloudstrife - 25/10/2007 14:59
Avatar van cloudstrife PHP beginner geen php gebruiken in je smarty templates...
Offline Warbringer - 25/10/2007 15:35
Avatar van Warbringer Onbekend oke geen php gebruiken dus, maar hoe maak ik een formulier dan? 
zonder php te gebruiken... k ga even in de link zoeken hopelijk vindt ik het!
Offline Rens - 25/10/2007 15:57
Avatar van Rens Gouden medaille

Crew algemeen
Gebruik TemplatePower i.c.m. blocks?
Offline timmie_loots - 25/10/2007 16:22 (laatste wijziging 25/10/2007 16:24)
Avatar van timmie_loots PHP gevorderde Smarty is wat veelzijdiger dan TemplatePower, maar dat terzijde denk ik niet dat het hem met TemplatePower wel gaat lukken zonder wat meer uitleg.

Wat de topicstarter wel moet doen is even een tutorial over Smarty erbij pakken, zodat hij het principe wat beter begrijpt.

Bij templates gaat het er namelijk om dat je de uiteindelijke layout en de uitvoering van de PHP code apart houdt. Je moet dus twee bestanden hebben: 1 bestand met daarin de PHP code, en het andere bestand met daarin de template code. In jouw voorbeeld krijg je dus het volgende:

  1. <?php
  2.  
  3. // De class laden
  4. require_once "Smarty/libs/Smarty.class.php";
  5.  
  6. $tpl = new Smarty();
  7. $tpl->template_dir = 'templates'; // Wel even de map templates aanmaken
  8. $tpl->compile_dir = 'templates_c'; // Wel even de map templates_c aanmaken
  9.  
  10. // Kijken of het formulier verstuurd is, ik doe het zo omdat deze
  11. // manier wat universeler is.
  12. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  13.  
  14. // Hier kun je eventueel nog wat bewerkingen uitvoeren op de
  15. // verzonden data.
  16.  
  17. mail(); // Die wil je natuurlijk wel uitvoeren
  18.  
  19. $tpl->assign('done', true);
  20. $tpl->assign('title', 'Formulier verzonden');
  21. $tpl->display('mailform.tpl');
  22.  
  23. } else {
  24.  
  25. $tpl->assign('title', 'Formulier invullen');
  26. $tpl->display('mailform.tpl');
  27.  
  28. }
  29.  
  30. ?>


Zoals je ziet wordt er een bestand met de naam mailform.tpl aangeroepen, die moet je in de map 'templates' zetten, en die ziet er als volgt uit:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>{$title} - contact</title>
  5. <meta name="description" content="Een mooi contactformuliertje">
  6. <meta name="keywords" content="contact mail form">
  7. <meta name="author" content="timmie_loots">
  8. </head>
  9. <body>
  10. {include file='header.tpl'}
  11. {if isset($done) && $done eq true}
  12. Klaar!
  13. {else}
  14. <form id="form" action="{$smarty.server.PHP_SELF}" method="post">
  15. <!-- Hier het formulier -->
  16. </form>
  17. {/if}
  18. {include file='footer.tpl'}
  19. </body>
  20. </html>


Zoals je ziet gebruik ik ook {include file='header.tpl'}, dat betekend dat je in de map 'templates' een bestand 'header.tpl' moet hebben met daarin de layout van de header, hetzelfde geld voor footer.tpl.
Offline cloudstrife - 25/10/2007 16:22
Avatar van cloudstrife PHP beginner
Rens schreef:
Gebruik TemplatePower i.c.m. blocks?


Hij wil smarty gebruiken...

Het kan even goed met smarty en blocks, assign gewoon een variabele extra om die submit te checken zoals je nu doet met php alleen gebruik je de controle structuren van smarty.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.194s