Dat doe je in dit geval in PHP en dat moet prima leesbaar zijn. Een Template engine is IMHO puur het invullen van variabelen in HTML. Natuurlijk kun je daar wat handige truuks bij doen (loops, equations, etc), maar volledige forms schrijven horen daar wat mij betreft niet bij.Erkens schreef op dinsdag 14 augustus 2007 @ 12:34:
[...]
Waarin verschilt een template engine van een "formbuilder"? Daarnaast moet die formbuilder ook geschreven zijn, hoe doe je het daar dan? Moet dat niet leesbaar zijn
Het toevoegen van bijvoorbeeld Ajax elementen aan je pagina valt daar IMHO ook onder. Je wil niet een bak javascript in je view hebben staan, maar je wil een php call die aan de hand van wat parameters fijne javascript output. Het kan wel, maar het is veel mooier om het te scheiden. Daarnaast wil je zelf helemaal geen javascript schrijven
Voorbeeldje van view in RoR (ja, daar is geen syntax highlighting voor op T.net):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <h1><%= _('New purchase')</h1> <%= error_messages_for :purchase %> <div class="small_form_div"> <% form_for(:purchase, :url => purchases_path) do |f| %> <p> <b>Option</b><br /> <%= f.collection_select :option, PurchaseOption.find(:all), :id, :name %> </p> <p class="buttonContainer"> <%= submit_tag _('Create') %> </p> <% end %> </div> |
In de template vul ik dus wel bijvoorbeeld de vertaling van purchases in, maar de constructie van het formulier laat ik over aan de formbuilder. Bijvoorbeeld PHP Cake gebruikt dit soort constructies.
Ben ik het niet met je eens. Op het moment dat je voor elke edit-view een form script in je template schrijft, neemt de kans op een foutje enorm toe ten opzichte van een formbuilder die je overal gebruikt. En als je een lek/bug vind, kun je in 1x je volledige applicatie patchen.offtopic:
over minder fouten/exploit mogelijkheden valt weinig te zeggen aangezien dat afhankelijk is van de situatie
[...]
[ Voor 34% gewijzigd door crisp op 15-08-2007 00:01 ]
Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.