opi: HTML::Template und "option selected"

Beitrag lesen

Hallo Siechfred,

Tag opi.

Ich möchte in einem Formular einen Eintrag vorselektieren und habe zunächst ein kleines Testskript geschrieben:

Soweit so klar, deine Abneigung gegen CGI.pm hast du aber noch nicht abgelegt, oder? ;-)

hast du das wohlmöglich aus irgendeiner Konversation mit Struppi
falsch aufgefasst? :-)

Ich hatte noch nie eine Abneigung gegen CGI.pm. Ganz im Gegenteil.
Für GD::Graph und fatalsToBrowser war es gut genug. Alles andere
wollte ich aus Lernzwecken nicht verwenden. Wenn ich es von Anfang an
verwendet hätte, könnte ich jetzt keine Templates schreiben.

Jetzt würde ich es verwenden, aber die klare Trennung von Skript und
HTML/Design halte ich für sehr sinnvoll. Bisher musste ich immer
beides machen. Ich habe die Skripts entwickelt und auch das Design.
Ist doch toll, wenn ich jetzt etwas davon an jemanden abtreten
kann :-)

Ausserdem, was spricht denn gegen die Verwendung von HTML::Template?

Das einzige, was mich daran stört ist, dass man sich vorher manche
Hashes mühselig zusammenstricken muss. Aber damit kann ich leben.

Das Script liefert dem Template-Ersteller nur die Daten, nämlich die Automarken und welche vorselektiert wurde. Wie er diese Daten darstellt, ist ihm überlassen. Dazu muss er natürlich wissen, was sich hinter den Variablennamen (in diesem Fall "selected") verbirgt und entsprechend reagieren.

<select name="Marke" size="1">
      <TMPL_LOOP NAME="formular_loop">
      <option value="<TMPL_VAR NAME="value">"<TMPL_IF NAME="selected"> selected</TMPL_IF>><TMPL_VAR NAME="value"></option>
      </TMPL_LOOP>
   </select>

Wo ist hier das Problem, das Ganze in eine Liste umzumodeln:

<ul id="automarken">

<TMPL_LOOP NAME="formular_loop">
    <TMPL_IF NAME="selected">
      <li class="selektiert">
    <TMPL_ELSE>
      <li class="nicht_selektiert">
    </TMPL_IF>
    <TMPL_VAR NAME="value">
    </li>
  </TMPL_LOOP>
</ul>


>   
> Du lieferst ja kein HTML aus, sondern nur einen Wert, anhand dessen der Template-Ersteller festlegen kann, wie die Darstellung der Daten erfolgen soll, in meinem obigen Beispiel eben durch Zuweisen einer anderen CSS-Klasse. Wenn du noch Verweise haben willst, dann musst du natürlich dafür sorgen, dass der Ersteller die dafür nötigen Daten geliefert bekommt.  
  
Okay, du hast vollkommen recht.  
  

>   
> Du schreibst z.B.:  
>   
> > <form action="/local/cgi/template.cgi" method="POST">  
>   
> Du solltest hier besser schreiben:  
>   
> `<form action="<TMPL_VAR NAME='script_name'>" method="POST">`{:.language-html}  
  
Ok, das werde berücksichtigen. Aber das war ja auch nur ein Beispiel.  
  

> Ich hoffe, dich richtig verstanden zu haben :-)  
  
Jawohl. Danke dir.  
  
Greez,  
opi

-- 
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|